我有两个分别使用客户和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,
];
}
感谢您的任何帮助,谢谢!