在Laravel中处理不同类型的用户角色

时间:2017-02-25 05:03:35

标签: php laravel laravel-5 roles

我有一个网络项目,有3种类型的用户,比如root admin,super admin和kitchen admin。每个用户或角色都有不同的功能:root admin将创建超级管理员和其他小功能,超级管理员创建厨房管理员和其他功能的方式相同,厨房管理员有自己的功能说处理订单。

我想知道为每个用户设置单独的laravel设置是否是一个好主意,或者所有这些用户都可以在一个laravel设置中开发?

由于我是laravel的新人,因此这方面的一个小小的领导将是一个很大的帮助。

1 个答案:

答案 0 :(得分:0)

您可以为每个用户单独设置。那会有用。但是也很难维护,你可能需要写3次函数(登录,注销,CRUD等)。

但是,您可以使用授权创建单个项目。 Laravel开箱即用,为您提供了一种通过CompletableFuture.runAsync( <thread A> ) .thenRun( <stuff that should be done after A completes> ); 授权和限制某些操作或通过Gate限制模型的简便方法。您还可以通过Policy限制网址。看到你有3种不同的限制动作的方法。

我的个人偏好是Middleware,因为它与模型绑定。您有一个权限列表,并为每个角色授予其权限,例如:'create_sys_admin'。然后将此权限链接到“root_admin”角色。所以在你的政策中你可以写:

Policy

定义策略后,我们可以检查控制器中的propser权限。在控制器的任何功能中,您始终可以检查适当的权限

public function createSysAdmin(User $user) {
    return $user->role->permissions->contains('create_sys_admin');
}

这只是一种方式。正如我之前所说,你也有盖茨和中间件。在此处阅读更多内容:https://laravel.com/docs/5.4/authorization

如果您想要已经制作的东西,可以使用这个包:https://github.com/Zizaco/entrust