【发布时间】:2018-07-10 18:24:20
【问题描述】:
我正在开发一个小项目,我想实现一个基于页面用户访问的“高级”角色系统。 我在处理这个方案背后的逻辑时遇到了一些麻烦,因为我希望能够添加和删除角色和权限,我想用这种方式来做。希望您能与我分享您的建议。
我的 users 表在用户名、密码等字段旁边,它包含一个 userlevel 字段。
我打算创建以下方案:
角色表:
id - AI -> is referenced with **userlevel** field in users table
name - Role Name
description - Role Description Description
页表:
id - AI
page_link -> saves the link of the page
description
权限表:
id - AI
role_id -> referenced with **id** in roles table
page_id -> referenced with **id** in pages table
所以我的想法是:
应该以某种方式保护的每个页面:
- 从 users 表中读取 userlevel;
- 搜索该角色是否存在于 roles 表中;
- 如果没有,拒绝访问,如果存在,则根据用户权限为 role_id 创建一个 page_id 数组;
- 根据表权限中的每个 page_id 为表页面中的 pages_link 创建一个数组;
- 读取URL,如果数组中的页面链接,允许访问,如果不是,拒绝访问;
我的链接如下: /添加用户 /remove-user/user_id
如果我授予页面 /remove-user 的权限,用户可以删除用户吗? (基本访问/remove-user/user_id)
我这样想对吗?我在创建这样的系统时感到非常困惑。 我真的很想访问页面和功能(例如,应该允许版主禁止用户但不能删除它 - 如果这些功能在同一页面上,我该如何实现?)。除此之外,我还需要另一个表用于“功能”,允许用户这样做或不这样做并以这种方式创建代码?
例如表userfunctions
id
role_id
permission
如果这个表中有权限edit_users,那么在渲染页面时,如果在数组“feature”中,是否显示按钮?
您能这样指导我吗? 没有这样的理论有更快的方法吗? 我可以很容易地做这个代码,我只是对这样的方案背后的逻辑过程感到困惑。
谢谢
【问题讨论】:
-
这是一个相当广泛的问题,可能不太适合 SO,它主要专注于解决某人遇到的特定问题。如果您已经构建了这样一个系统并且从中得到错误或意外行为,那么这可能会引起一些反应。我的建议是研究内置此类功能的流行框架,这样您就不会重新发明轮子。身份验证和授权不是轻而易举的任务。
-
感谢您的回答。通常我不使用框架。我喜欢自己做。假设我有自己的项目微框架。由于这是一个合乎逻辑的问题,我认为这可能适合这里。这不是代码的问题,而是逻辑方式的问题。感谢您的宝贵时间。