Пользовательский логин перенаправляет на / home вместо страницы / welcome в Laravel 6 - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь создать пользовательский логин.После входа в систему он попадает на страницу «/ home» вместо страницы «/ welcome».

Вот мой контроллер входа:

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = '/welcome';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function view()
    {
        return view('auth.login');
    }

    public function login(Request $request)
    {
        $this->validate($request, [
                'email'    => 'required',
                'password' => 'required',
            ]);

        $loginValue = $request->input('email');

        $login_type = $this->getLoginType($loginValue);

        $request->merge([
            $login_type => $loginValue
        ]);

        if (auth()->attempt($request->only($login_type, 'password'))) {
            // return redirect()->intended($this->redirectPath());
            return redirect()->intended(route('welcome'));
        }
        return redirect()->back()->withInput()->withErrors([ 'email' => "These credentials do not match our records." ]);
    }

    public function getLoginType($loginValue)
    {
        return filter_var($loginValue, FILTER_VALIDATE_EMAIL ) ? 'email'
       : ( (preg_match('%^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \/]?)?((?:\(?\d{1,}\)?[\-\.\ \/]?){0,})(?:[\-\.\ \/]?(?:#|ext\.?|extension|x)[\-\.\ \/]?(\d+))?$%i', $loginValue)) ? 'mobile' : 'name' );
    }
}

У меня изменился путь перенаправления с Illuminate \ Foundation\ Exception \ Handler.php:

protected function unauthenticated($request, AuthenticationException $exception)
{
  return $request->expectsJson() ? response()->json(['message' => $exception->getMessage()], 401 : redirect('/');
}

Файл моих маршрутов:

Route::get('/login', 'Auth\LoginController@view')->name('login');
Route::post('/login', 'Auth\LoginController@login');

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

Если вы хотите перенаправить на страницу «/ Welcome».Вам необходимо внести изменения в промежуточное программное обеспечение.

Промежуточное программное обеспечение: RedirectIfAuthenticated.php

Необходимы следующие изменения.

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/welcome');
    }
    return $next($request);
}

изменить возврат перенаправить на "/ welcome" вместо "/home ".

Я надеюсь, что это решение поможет решить вашу проблему.Благодаря.

0 голосов
/ 19 сентября 2019
Redirect::intended('welcome');

// Попробуйте перенаправить их туда, куда они направлялись, если это не удалось, перенаправьте их на домашнюю страницу

Так что я думаю, что у вас есть какие-либо проблемы с маршрутом страницы приветствия, или вы пропустили эту страницу приветствия.

0 голосов
/ 19 сентября 2019

измените return redirect()->intended(route('welcome')); на return redirect(url('/welcome')) и добавьте маршрут к / welcome в файле web.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...