Laravel - 阻止非管理员用户访问信息中心

时间:2018-03-27 08:04:00

标签: laravel laravel-5

我阻止没有'admin'角色的用户登录到这样的Laravel 5.5应用程序中的仪表板,如app / http / Controllers / auth / LoginController.php ..

   protected function credentials(\Illuminate\Http\Request $request)
    {
        $credentials = $request->only($this->username(), 'password');

        return array_add($credentials, 'type', 'admin');
    }

这很有效,但如果有人使用忘记密码功能重置密码,那么它会绕过此功能并让他们进入仪表板。

如何锁定信息中心以防止这种情况发生?

我应该在密码重置后禁用自动登录,这还够吗?

2 个答案:

答案 0 :(得分:1)

覆盖authenticated中的LoginController方法。将下面的代码放在LoginController中。

protected function authenticated(Request $request, $user)
{
    if ( Use your Logic here ) {
        return redirect()->route('admin.home');
    }

    return redirect('/home');
}

答案 1 :(得分:1)

使用Middleware,您可以完全控制应用中的所有请求。

此外,您可能希望查看(spatie / laravel-permission)@ github,它将使您的角色/权限过程变得更加容易。