Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.10.2016 17:49:02

respectpick
Откуда: Москва
Сообщений: 83

После авторизации/регистрации постоянно редиректит на /home

версия 5.0.35

пытаюсь заюзать авторизацию из коробки, но проблема в том, что меня постоянно редиректит на /home после авторизации.

в доках написано, что нужно в PasswordController добавить

protected $redirectTo = '/';

но не помогает.

Пытался добавить в app/Http/Controllers/Auth/AuthController.php, опять же не помогает

увидел файл в app/Http/Controllers/Middleware/RedirectIfAuthenticated.php, там строка

		if ($this->auth->check())
		{
			return new RedirectResponse(url('/home'));
		}

		return $next($request);

пытался там менять, не помогает

увидел, что редирект происходит в файле app/Http/Controllers/Middleware/Authenticate.php

	public function handle($request, Closure $next)
	{
		if ($this->auth->guest())
		{
			if ($request->ajax())
			{
				return response('Unauthorized.', 401);
			}
			else
			{
				return redirect()->guest('auth/login');
			}
		}

		return $next($request); // вот тут
	}

но как задать адрес редиректа? и где?

Не в сети

#2 11.10.2016 17:57:27

respectpick
Откуда: Москва
Сообщений: 83

Re: После авторизации/регистрации постоянно редиректит на /home

если в файле app/Http/Controllers/Middleware/RedirectIfAuthenticated.php

заменить

		if ($this->auth->check())
		{
			return new RedirectResponse(url('/home'));
		}

		return $next($request);

на

		if ($this->auth->check())
		{
			return new RedirectResponse(url('/'));
		}

		return $next($request);

то сайт падает с ошибкой Сайт ***.ru выполнил переадресацию слишком много раз.

Не в сети

#3 11.10.2016 18:15:17

Re: После авторизации/регистрации постоянно редиректит на /home

В Laravel давно эта проблема, никак по-человечески сделать не могут.

Перезапиши (не знаю как по-русски грамотно) метод sendLoginResponse() в LoginController.php

Не в сети

#4 11.10.2016 18:19:26

respectpick
Откуда: Москва
Сообщений: 83

Re: После авторизации/регистрации постоянно редиректит на /home

AlexeyMezenin пишет:

В Laravel давно эта проблема, никак по-человечески сделать не могут.

Перезапиши (не знаю как по-русски грамотно) метод sendLoginResponse() в LoginController.php

но у меня нет такого файла

Не в сети

#5 11.10.2016 18:41:48

Re: После авторизации/регистрации постоянно редиректит на /home

А если поиском по проекту пройтись, по $redirectTo = '/home' или даже лучше просто '/home'?
Кажется, если в каких-то контроллерах это явно не указано, он от какого-то родителя наследует.
С другой-то стороны, так уж плохо, что он в контроллерах позволяет этим свойством рулить? Можно редиректить в зависимости от ситуации. Или что-то не так?

Изменено Androbim (11.10.2016 18:44:15)

Не в сети

#6 11.10.2016 18:48:36

respectpick
Откуда: Москва
Сообщений: 83

Re: После авторизации/регистрации постоянно редиректит на /home

Androbim пишет:

А если поиском по проекту пройтись, по $redirectTo = '/home' или даже лучше просто '/home'?
Кажется, если в каких-то контроллерах это явно не указано, он от какого-то родителя наследует.
С другой-то стороны, так уж плохо, что он в контроллерах позволяет этим свойством рулить? Можно редиректить в зависимости от ситуации. Или что-то не так?

в том-то и дело, что не позволяет рулить! уже час пытаюсь различные переменные задавать и в тупую переопределять методы - ничего, просто редиректит на home и все!

в контроле версий у меня нет папки vendor, но там есть трейт, который вроде как должен рулить этим, но все-равно никак не реагирует

Не в сети

#7 11.10.2016 18:49:04

Re: После авторизации/регистрации постоянно редиректит на /home

respectpick пишет:

но у меня нет такого файла

Извиняюсь, версию не увидел. Посмотри по аналогии. В 5.1-5.2, например, это Auth/AuthController.php (возможно и в 5.0 он же). Смотри какие трейты он использует и ищи в vendor эти трейты. Так ты найдешь метод, который отвечает за сам логин пользователя. В конце меняй редирект на что душе угодно (только не в трейте, а в app\Http\Controllers\Auth\AuthController.php или подобном).

Скорее всего тебе нужен тот же метод, о котором я писал выше, попробуй его сначала поиском в папке vendor найти.

Изменено AlexeyMezenin (11.10.2016 18:50:08)

Не в сети

#8 11.10.2016 18:51:39

Re: После авторизации/регистрации постоянно редиректит на /home

Вот я еще где менял, в миддлваре guest.

if (Auth::guard($guard)->check()) {
     return redirect('/home');

Не в сети

#9 12.10.2016 10:54:09

respectpick
Откуда: Москва
Сообщений: 83

Re: После авторизации/регистрации постоянно редиректит на /home

AlexeyMezenin пишет:
respectpick пишет:

но у меня нет такого файла

Извиняюсь, версию не увидел. Посмотри по аналогии. В 5.1-5.2, например, это Auth/AuthController.php (возможно и в 5.0 он же). Смотри какие трейты он использует и ищи в vendor эти трейты. Так ты найдешь метод, который отвечает за сам логин пользователя. В конце меняй редирект на что душе угодно (только не в трейте, а в app\Http\Controllers\Auth\AuthController.php или подобном).

Скорее всего тебе нужен тот же метод, о котором я писал выше, попробуй его сначала поиском в папке vendor найти.

в общем, нашел этот трейт, там есть метод

    public function redirectPath()
    {
       if(property_exists($this, 'redirectPath'))
       {
           return $this->redirectPath();
       }
       return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
    }

если пытаюсь переопределить у себя его, ловлю ошибку

TokenMismatchException in VerifyCsrfToken.php

В методе явно видно, что он ищет в свойствах redirectPath или redirectTo, но при объявлении этих свойств вообще никакой реакции на происходящее, тупо редиректит на home и все

Не в сети

#10 12.10.2016 11:29:28

Re: После авторизации/регистрации постоянно редиректит на /home

Не думаю, что переопределение метода - причина TokenMismatchException. Попробуй переопределить метод, который именно уже перенаправляет пользователя после входа. Насколько я помню, с redirectPath() у меня тоже в 5.1 не сработало.

Не в сети

#11 30.09.2017 10:43:49

Re: После авторизации/регистрации постоянно редиректит на /home

5.3
Поменял в middleware RedirectAuthenticated.php

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/'); //Здесь было /home
    }

    return $next($request);
}

Вроде бы, все нормально.

Не в сети

#12 30.09.2017 12:55:12

Re: После авторизации/регистрации постоянно редиректит на /home

Поменял в middleware RedirectAuthenticated.php

Поправочка, RedirectIfAuthenticated

Не в сети

Подвал раздела