Laravel 5.3 Admin Guard不能正常工作 [英] Laravel 5.3 admin guard not working

查看:224
本文介绍了Laravel 5.3 Admin Guard不能正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用相同的登录表单从两个不同的模型登录.我已经在config/Auth.php中定义了管理员后卫.但是,当我在Foundation/AuthenticateUsers中定义管理员后卫时,它会检查数据库表以验证用户,但会重定向回相同的登录表单.

config/auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

 'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],

基金会/AuthenticatUsers

protected function guard()
   {
       return Auth::guard('admin');
   }
public function login(Request $request)
  {
   $credentials = $this->credentials($request);

    if (Auth::guard('web')->attempt($credentials, $request-    >has('remember'))) {
        return $this->sendLoginResponse($request);
    }
    elseif(Auth::guard('admin')->attempt($credentials, $request->has('remember')))
    {
    return $this->sendLoginResponse($request);
    }
  }

解决方案

由于中间件的身份验证,管理员防护重定向到登录页面,我认为您需要执行类似的操作

public function __construct()
{
    $this->middleware('auth:admin');
}

阅读保护路线,指定警卫"部分

I am trying to login from two different model using same login form. I have defined admin guard in config/Auth.php. But when I define admin guard in Foundation/AuthenticateUsers it checks the database table to validate the user but redirects back to same login form.

config/auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

 'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],

Foundation/AuthenticatUsers

protected function guard()
   {
       return Auth::guard('admin');
   }
public function login(Request $request)
  {
   $credentials = $this->credentials($request);

    if (Auth::guard('web')->attempt($credentials, $request-    >has('remember'))) {
        return $this->sendLoginResponse($request);
    }
    elseif(Auth::guard('admin')->attempt($credentials, $request->has('remember')))
    {
    return $this->sendLoginResponse($request);
    }
  }

解决方案

Admin guard redirects to login page because of middleware auth, i think you need to do something like this

public function __construct()
{
    $this->middleware('auth:admin');
}

Read this Protecting Routes, part "Specifying A Guard"

这篇关于Laravel 5.3 Admin Guard不能正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆