Laravel角色与laravel-permission

时间:2017-06-20 13:25:26

标签: php laravel authentication permissions

我正在使用laravel-permission包。我创建了2个角色adminuser,并将admin角色与权限Access CMS相关联。我还创建了两个用户,一个使用admin角色,另一个使用user角色。

我已将所有admin路由放在AdminMiddleware后面:

Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'isAdmin']], function() {
  // Routes
}

中间件来自this tutorial

public function handle($request, Closure $next)
{
    if (!Auth::user()->hasPermissionTo('Access CMS')) {
        die('aargh');
    }

    return $next($request);
}

这适用于具有admin角色的用户。问题是,当我与其他用户登录时,它die(应该),但用户仍然登录。如果我在此次尝试后回显Auth::user(),则会显示非admin用户。我期待的是它可以防止用户完全登录。我错过了什么?

2 个答案:

答案 0 :(得分:0)

可能不是最好的选择,但你可以试试。

Auth::logout();

然后在用户退出后将其返回主页。

答案 1 :(得分:0)

您缺少首先执行auth中间件。中间件按照它们在数组中声明的顺序执行。 routing groups

要实现根本不登录,您必须更改中间件的顺序,但由于用户不会被初始化,您将无法再使用Auth::user()。因此,要在没有Auth::user()的情况下执行此操作,您必须自己查询数据库以查找用户对象,然后检查权限。不建议这样做。为什么用户是否被刷新是完全重要的?