【问题标题】:Laravel - Prevent non admin users from accessing the dashboardLaravel - 防止非管理员用户访问仪表板
【发布时间】:2018-03-27 17:05:42
【问题描述】:

我正在阻止不具有“管理员”角色的用户登录到 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');
    }

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

如何锁定仪表板以防止这种情况发生?

我是否应该在密码重置后禁用自动登录,这样就够了吗?

【问题讨论】:

  • 创建一个中间件,如果不是管理员则重定向用户。

标签: laravel laravel-5


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 2020-07-17
      • 1970-01-01
      • 2017-03-02
      • 2017-04-29
      • 2019-08-15
      • 2016-07-02
      • 2010-11-12
      • 2017-05-11
      相关资源
      最近更新 更多