Laravel 5.4 с пользовательским логином не удалось перенаправить - PullRequest
0 голосов
/ 02 апреля 2020

Я столкнулся с проблемой при входе в систему с 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);

1 Ответ

0 голосов
/ 03 апреля 2020

Изменить следующее

С

if (auth()->attempt($credentials, $request->has('remember')))
  {
     return redirect($this->redirectTo);
  }

На

if (Auth::attempt($credentials, $request->has('remember')))
 {
  return redirect()->intended($this->redirectTo);
 }

И это работает

...