Laravel 5.4认证

时间:2017-02-22 03:00:07

标签: php laravel

我有疑问和问题: 首先是我的代码:

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');
});

问题在于:

  1. 每次关闭浏览器时(expire_on_close:true开启) 会话文件)页面会将我重定向到/login而不是。{ /auth。我无法找到代码将其重定向到/login的原因。任何解决方案?

  2. 我想应用rememberMe功能。但每次我关闭浏览器时,它总是会将我注销。我试过设置expire_on_close:false。是的,它正在运作,但每次我运行auth()->viaRemember()它总是让我失意。有什么建议吗?

  3. 我的会话使用文件。

1 个答案:

答案 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()即可。