【发布时间】:2017-07-19 13:35:34
【问题描述】:
我想进行权限检查,如果用户没有权限,将禁止他们访问某些页面和按钮。在我的数据库中,我有一个用户表和权限表,然后是一个 permission_user 表来为每个用户分配权限。
现在,我有一个页面,其中显示了一个包含所有数据摘要的表格,并且那里有一组按钮(查看、编辑等),有些用户无法完成所有这些操作,所以我想要这些按钮不可见/禁用。如果他们在 URL 中键入这些按钮(例如 public/admin/edit/id),我不希望他们访问与这些按钮链接的受限页面。
这是当前可用的权限
PermissionID PermissionName
1 View
2 Add
3 Edit
4 Delete
现在在我的 permissions_user 表中是这样的
PermissionID AccountID
1 2
这是我的控制器的一部分
public function showDetails($action, $id)
{
return view('pages.admin.form_details', ['action' => $action, 'id' => $id]);
}
这个示例函数将显示详细信息页面和返回操作(字符串是查看或编辑),然后在我的刀片中检查查看或编辑页面的显示。如果可能的话,我想一次进行所有检查(就像如果用户登录或未通过中间件登录,您如何检查每个页面)。我实际上尝试了 zizaco entrust,但我不明白如何实现它并最终将其从我的项目中删除。
我一直在考虑在每个页面控制器的显示功能中做这样的事情。
if($action == "edit)
//check if edit permission exists for the authenticated user. if not abort and show error page.
我认为这样做是低效且重复的。会有更好的解决方案吗?或者也许是我可以更容易集成的包?
【问题讨论】:
标签: php laravel laravel-5.2