首页 > 解决方案 > 中间件不允许我登录 Web Guard

问题描述

我有三个用户(员工,管理员,人力资源)......使用不同的警卫进行限制。其他警卫工作正常,但默认的网络警卫和员工(用户)的警卫不允许我登录,也没有给出任何错误。

这是我的登录功能

public function logged(Request $request)
    {
        $this->validate($request,[
            'email' => 'required|email',
            'password' => 'required|min:6'
        ]);

        if (Auth::guard('web')->attempt(['email'=>$request->email,
           'password' => $request->password]))
        {

             return redirect()->intended(url('/home'));
        }
        Session::flash('message','Invalid Login details');
        return redirect()->back()->withInput($request->only('email','remember'));
    }

   Below is my middleware

    public function handle($request, Closure $next, $guard = null)
        {
            switch($guard){
                case 'admin':
                if(Auth::guard($guard)->check()){
                    return redirect()->route('admin.dashboard');
                }
                break;

                case 'hr':
                if(Auth::guard($guard)->check()){
                    return redirect()->route('hr.dashboard');
                }
                break;

                default:
                 if(Auth::guard($guard)->check()){
                return redirect()->route('home');
              }

            return $next($request);

            }

**下面是我的 config/auth.php ** 按要求

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],



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

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

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

    'admin-api' => [
        'driver' => 'token',
        'provider' => 'admins',
    ],

    'hr' => [
        'driver' => 'session',
        'provider' => 'hrs',
    ],

    'hr-api' =>[
        'driver' => 'token',
        'provider' => 'hrs'
    ],
],



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

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admins::class,
    ],

    'hrs' => [
        'driver' => 'eloquent',
        'model' => App\Hr::class,
    ],

    'users' => [
        'driver' => 'database',
        'table' => 'users',
    ],
],

标签: laravelauthenticationmiddleware

解决方案


如果您跳过守卫并让它只使用默认值会发生什么,因此default:请执行以下操作

if (Auth::check()) {
    return redirect()->route('home');
}

推荐阅读