问题
I make use of php artisan make:auth
in laravel 5.4, as we know laravel default login only supports email so, I put login()
in AuthController like below (login working)-
public function login(Request $request)
{
$remember = ($request->input('remember')=='1')?true:false;
// this will remember the user as given in laravel documentation.
if (Auth::attempt(['user_name' => $request->user_name, 'password' => $request->password],$remember)) {
return redirect()->intended('admin');
}
elseif (Auth::attempt(['email'=> $request->user_name, 'password' => $request->password],$remember)) {
return redirect()->intended('admin');
}
else {
return redirect('/login')->with(['error'=>'Invalid user name and password'])
->withInput();
}
}
Now, whenever session expired simply typing url should redirect to admin/dashboard, But couldnot do so... By default it redirects to login page.
I put Auth::viaRemember()
in constructor of AuthContoller class before checking for middleware like below-
public function __construct()
{
// login with remember me before checking whether its logged in or not
Auth::viaRemember();
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
What i follow in stack overflow -
Via Remember me always return false -this link is similar to mine
viaRemember not work - laravel
Laravel 5 viaRemember() always false
Laravel: Implement Auth::viaRemember() across the website
回答1:
protected function attemptLogin(Request $request)
{
// dd($request->has('remember'));
$remember =$request->has('remember');
return $this->guard()->attempt(
$this->credentials($request), $remember
);
}
use this in AuthenticateUsers.php it worked for me
回答2:
public function __construct()
{
Auth::viaRemember()
Auth::check();
Auth::viaRemember();
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
try this
来源:https://stackoverflow.com/questions/44403391/authviaremember-doesnot-work-means-always-return-false-even-after-successfu