Я столкнулся с проблемой при входе в систему с laravel 5.4, где после успешного входа в систему пользователь все еще будет перенаправлять на страницу входа. Я ссылался на различные материалы Документация , Настраиваемая охрана , Настраиваемый логин , Несколько охранников , но я не смог найти решение по этому вопросу. Я также пытался dd ($ guard) в RedirectIfAuthenticated, но возвращает ноль. Как перенаправить и сохранить пользователей на домашней странице после входа в систему?
Веб. php
Route::get('/', 'HomeController@index');
// Authentication routes...
Route::get('auth/login', 'Auth\LoginController@getLogin')->name('login');
Route::post('auth/login', 'Auth\LoginController@postLogin');
Route::get('auth/logout', 'Auth\LoginController@getLogout')->name('logout');
// Registration routes...
Route::get('auth/register', 'Auth\RegisterController@getRegister')->name('register');
Route::post('auth/register', 'Auth\RegisterController@postRegister');
// Password reset link request routes...
Route::get('password/email', 'Auth\PasswordController@getEmail');
Route::post('password/email', 'Auth\PasswordController@postEmail');
// Password reset routes...
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');
Контроллер входа
use AuthenticatesUsers;
protected $redirectTo = '/home';
protected $redirectAfterLogout = '/auth/login';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
protected function guard()
{
return Auth::guard('users');
}
protected function authenticated(Request $request, $user)
{
if(Auth::check())
{
return redirect()->route('home');
}
else
{
return redirect()->route('login');
}
}
public function getLogin()
{
return view('auth.login');
}
public function postLogin(Request $request)
{
$this->validate($request, [
'username' => 'required',
'password' => 'required|min:6',
]);
$credentials = array(
'username' => $request->input('username'),
'password' => $request->input('password'),
);
$userData = User::where('username',$request->username)->first();
if (auth()->attempt($credentials, $request->has('remember')))
{
return redirect($this->redirectTo);
}
return redirect()->back()
->withInput($request->only('username', 'remember'))
->withErrors([
'username' => 'This credentials do not match our records.',
]);
}
Я также пытался изменить вид возврата после успешного входа в систему, чтобы он возвращал представление («home»), может перенаправлять на домашнюю страницу, но при этом пользователь не будет оставаться в системе.
if (auth()->attempt($credentials, $request->has('remember')))
{
return view('home'); // The changes made
}
RedirectIfAuthenticated. php
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
Я также пытался
if(Auth::check())
{
return redirect('/home');
}
return $next($request);