首页 > 解决方案 > 如何为laravel中的管理员进行自定义登录?

问题描述

我使用 laravel ui 进行身份验证。现在,我想自定义登录,只有管理员可以登录,否则,用户将被重定向到用户的登录页面。在用户表中的一列名称"is_admin"。如果 is_admin == 1 则返回管理面板,否则返回用户的登录页面。这是我的自定义登录方法

public function adminAuth(Request $request) {

    $request->validate([
        'email'    => 'required',
        'password' => 'required',
    ]);
    $credentials = $request->only('email', 'password');
      if (Auth::attempt($credentials)) {
        $user = User::where('email', $request->email)->first();
        if ($user->is_admin == 1) {
            return redirect()->route('admin.home');
        } else {
            return redirect()->back()->with('error', 'Oppes! You have no permission ');
        }
    }
    return redirect()->back()->with('error', 'Oppes! You have entered invalid credentials');
} 

现在问题已经解决了

标签: mysqllaravelauthenticationeloquent

解决方案


我建议您将以下逻辑添加到redirectTo()身份验证中间件的方法中,然后定义其他视图和控制器以进行管理员登录。

App\Http\Middleware\Authenticate

protected function redirectTo($request)
{
    if (!$request->expectsJson() && Str::is('admin*', request()->path())) {

        return route('admin.login');
    }

    if (!$request->expectsJson()) {
        return route('login');
    }
}

推荐阅读