【发布时间】:2021-04-05 07:03:47
【问题描述】:
我使用 Auth::guard 身份验证。
我输入了正确的电子邮件和密码,但它仍然返回错误!
但是Auth::guard($guard)->attempt($dataLogin) 返回true。我找不到解决方案。
这是登录控制器文件:
<?php
namespace App\Http\Controllers\Web;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;
class adminController extends Controller
{
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
const ALL_GUARD = ['admin'];
public function guard()
{
return Auth::guard('admin');
}
function login(Request $request)
{
$dataLogin = $request->only(['email', 'password']);
foreach (self::ALL_GUARD as $guard) {
dd(Auth::guard($guard)->attempt($dataLogin));
if (Auth::guard($guard)->attempt($dataLogin)) {
return redirect('/'.$guard.'/');
}
}
return redirect('/login')->with('error', 'error!');
}
public function showLoginForm()
{
return view('auth.login');
}
}
这里是访客中间件:
<?php
namespace App\Http\Middleware;
use App\Traits\ResponseTrait;
use Closure;
use Illuminate\Support\Facades\Auth;
class adminLogin
{
const GUARD_ADMIN = 'admin';
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
use ResponseTrait;
public function handle($request, Closure $next)
{
if (Auth::guard(self::GUARD_ADMIN)->check()) {
return $next($request);
}
return abort(401);
}
}
内核.php:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'admin' => \App\Http\Middleware\adminLogin::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,
];
我做错了什么?帮帮我,谢谢!
【问题讨论】:
-
请添加您的错误响应和路由声明。
标签: php laravel authentication