Laravel 5.8 Auth :: guard($ guard)-> check()始终返回false

问题描述 投票:0回答:1

我有两个分别使用客户和adminuser保护的登录名。我有用于管理员用户登录的checkRole中间件,它运行良好。我使用来宾中间件(RedirectifAuthenticated)进行客户登录。用Auth::guard($guard)->check()进行客户登录检查时,它总是返回false。但是Auth::guard('customer')->attempt返回true。我找不到解决方案。

这里是客户的登录控制器

class LoginController extends Controller
{

    use AuthenticatesUsers;

    public function __construct()
    {
       $this->middleware('guest:customer')->except('customerlogout');
    }

    //login the customer
    public function customerLogin(Request $request)
    {
        $email = $request->get('email');
        $password = $request->get('password');
        
        
        //Getting user inputs and authenticate the customer
        $status = Auth::guard('customer')->attempt([
            'email' => $email, 
            'password' => $password ] 
            );

        //Check login  
        if ($status) {
            //if login pass,redirect to customer account page
            return redirect()->intended('/customer_account');
            
         }else{
             //if login fail,redirect back to home page
             return redirect()->back();
         }
    }
    
    //logout the customer
    public function customerlogout(Request $request)
    {   
        Auth::guard('customer')->logout();
        $request->session()->flush();
        return redirect('/index');   
    }
}

这里是访客中间件

    public function handle($request, Closure $next, $guard = null)
    {       
        if ($guard === "customer" && Auth::guard($guard)->check()) {
            return redirect('/customer_account');
        }
        if (!Auth::guard($guard)->check()) {
            return redirect('/index');
        }
        return $next($request);
    }

Kerenel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{

    protected $middleware = [
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \App\Http\Middleware\TrustProxies::class,
    ];


    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \RealRashid\SweetAlert\ToSweetAlert::class,

        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];


    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'roles' => \App\Http\Middleware\CheckRole::class,
    ];

    protected $middlewarePriority = [
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\Authenticate::class,
        \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \Illuminate\Auth\Middleware\Authorize::class,
    ];
}

感谢您的任何帮助,谢谢!

php laravel authentication laravel-5.8
1个回答
0
投票

此问题与以下问题类似

stackoverflow.com/laravel-authentication-authcheck-returns-false

尝试此解决方案

© www.soinside.com 2019 - 2024. All rights reserved.