【发布时间】:2015-07-29 04:49:47
【问题描述】:
所以我是 Laravel 的新手,并试图为我的应用程序上的用户创建一个权限系统。这是我的方法:
1) 在 users 表中放置一个名为“permissions”的列 2) 创建一个包含 id 和 page-name 列的权限表
它的工作原理如下:
每个页面都将分配一个 ID。例如,页面 Manage Accounts 的 ID 为 1,而页面 Manage Customers 的 ID 为 2表。
为了授予用户对管理帐户的完全访问权限并仅查看对管理客户的访问权限,我将在用户 1.1111,2.1000
现在,当用户登陆“管理帐户”页面时,我将从权限表中获取当前页面的页面 ID,即 1。然后,我会将 users.permissions 列中的字符串值转换为以下格式:array('1' => '1111', '2' => '1000');。现在我可以通过 $permissions['1'];.
获取针对页面 ID 保存的用户权限
-
然后我将有一个函数来解析 4 位数字并按确切顺序获取以下布尔值:
$canView = true;
$canAdd = true;
$canEdit = true;
$canDelete = 真;
现在在我的页面中,我可以轻松地放置检查并相应地显示项目。
问题
1) 所以第一个问题。这是一个好方法吗?还是有更好的方法来解决这个问题?我喜欢这种方法,因为我只需要在数据库中再添加一个表,并且它的条目数与我的应用程序上的页面数量一样多,而且数量并不多。这也意味着我只需访问数据库一次,然后我就可以继续使用变量中的值。
2) 我应该为权限创建一个单独的类吗?我是新手,所以我不完全了解 Eloquent 课程。但这是我应该为此使用的东西吗?还是应该将我需要创建的函数添加到 users 类?
3) 我应该在哪里存储 $canView、$CanEdit 等的值。我应该将它们放在类中以获得权限并为其创建一个对象吗?还是我应该只使用用户类并使用 Auth:: 访问它们?我不想使用 Session,我认为它不安全。
4) 我能以某种方式在每次打开页面时自动加载权限吗?我正在研究 beforeFilter,并考虑将其添加到每个控制器的构造函数中。这是个好主意吗?
非常感谢您的时间和帮助。
干杯
【问题讨论】:
标签: php laravel-4 permissions eloquent