2017-02-22 22 views
0

Проверка подлинности У меня есть вопросы и проблемы: First вот мой код:Laravel 5,4

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('/', '[email protected]')->name('auth.index'); 
    Route::post('login', '[email protected]'); 
}); 

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. Я хочу применить функцию memMe. Но каждый раз, когда я закрываю свой браузер, он всегда меня выводит. Я пробовал установить expire_on_close:false. Да, он работает, но каждый раз, когда я запускаю auth()->viaRemember(), он всегда возвращает мне false. Любое предложение?

Мое Сессия, использующая файл.

+0

Вы проверили промежуточное ПО? Он переадресовывает логин там, я думаю, –

+0

@SaravananSampathkumar. Я применяю только свое собственное промежуточное программное обеспечение 'auth.check' к маршрутам. Я не вижу, чтобы какой-либо код перенаправлял меня для входа в мое промежуточное программное обеспечение. – ssuhat

ответ

1

1- Check 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() должны работать, когда пользователь возвращается на сайт.

+0

Привет, да! которые решают проблему. И почему она вводит исключение вместо моего промежуточного программного обеспечения ?. – ssuhat

+0

Мой GUESS заключается в том, что это потому, что вы используете 'Auth', поэтому он всегда перенаправляет туда в случае исключения. – EddyTheDove

+0

Как насчет того, чтобы напомнить мне, что мне нужно установить для expire_on_close? – ssuhat