我有疑问和问题: 首先是我的代码:
AuthMiddleware.php
public function handle($request, Closure $next)
{
if (auth()->check()) {
return $next($request);
} else {
if (auth()->viaRemember()) {
return $next($request);
}
}
return redirect()->route('auth.index');
}
AuthController.php
if (auth()->attempt(compact('email', 'password'), true)) {
return redirect()->route('dashboard');
}
Kernel.php
protected $routeMiddleware = [
'auth.check' => \App\Http\Middleware\AuthMiddleware::class,
]
routes.php文件
Route::group(['prefix' => 'auth'], function () {
Route::get('/', 'AuthController@index')->name('auth.index');
Route::post('login', 'AuthController@login');
});
Route::group(['middleware' => 'auth.check'], function () {
Route::get('dashboard', function () {
return view('front.welcome');
})->name('dashboard');
});
问题在于:
每次关闭浏览器时(expire_on_close:true
开启)
会话文件)页面会将我重定向到/login
而不是。{
/auth
。我无法找到代码将其重定向到/login
的原因。任何解决方案?
我想应用rememberMe功能。但每次我关闭浏览器时,它总是会将我注销。我试过设置expire_on_close:false
。是的,它正在运作,但每次我运行auth()->viaRemember()
它总是让我失意。有什么建议吗?
我的会话使用文件。
答案 0 :(得分:1)
1-检查app/Exceptions/Handler.php
重定向登录的位置。函数名称为unauthenticated()
;
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('login'); //HERE
}
2-当你记得的时候,当用户回到网站时,只需做Auth::check()
或Auth::viaRemember()
即可。