Laravel 5 AuthServiceProvider 流程

Laravel 5 AuthServiceProvider flow

我是 Laravel 的新人,所以我需要帮助解决 AuthServiceProvider class。

如果用户可以拥有多个角色,我应该如何编写角色控制? 我有这个:

$gate->define( 'admin', function ( $user )
{
    return $user->roles()
        ->where( 'name', 'admin' )
        ->orWhere( 'name', 'super_admin' )
        ->first();
} );

或者最好写成

$gate->define( 'admin', function ( $user )
{
    foreach( $user->roles as $role )
    {
        if( $role->name == 'admin' || $role->name == 'super_admin' ) return true
    }
    return false;
} );

或者有更好的方法吗?第一个示例中的查询是执行一次还是每次我需要检查用户角色时执行?

谢谢。

您可以为角色和不同类型的权限使用 ready-made 包。这是我用过的一些包。

https://github.com/romanbican/roles

https://github.com/Zizaco/entrust