Laravel приложение выходит из аутентифицированного пользователя при перенаправлении (не должно) - PullRequest
0 голосов
/ 01 мая 2020

Я создал метод, который регистрирует пользователя на нашем сайте по ссылке с отдельного сайта. Мы используем токен и имя пользователя, чтобы найти пользователя, затем используем встроенный метод входа в систему для их аутентификации (я могу подтвердить, что все работает как положено).

Вот функция:

public function login($username, $token, $redirect)
{
    $accountLogin = AccountLogin::Where('username', $username)
        ->Where('token', $token)
        ->first();

    if ($accountLogin) {
        try {
            Auth::login($accountLogin);
            print_r(Auth::check()) // prints 1.
            header('Location: ' . $redirect);
            exit;
        } catch (\Exception $e) {
            return $e->getMessage();
        }
    }

    echo(array(
       'status' => 'error',
       'message' => 'Error logging in'
    ));
}

Моя проблема в том, что пользователь, по-видимому, вышел из системы после перенаправления.

В приведенной выше функции я вижу, что учетная запись найдена, и Auth::check() возвращает 1 или, если я повторяю Auth::User(), я получаю информацию о пользователях.

Затем мы пытаемся выполнить перенаправление, которое должно привести нас к маршруту, переданному в качестве параметра (вам необходимо пройти аутентификацию для всех этих маршрутов), но вместо этого я перенаправлен на домашнюю страницу и вышел из системы. Если я захожу с этой страницы, я получаю URL-адрес, который я хотел получить изначально (так что я вспоминаю, где я хочу go, но просто не узнает, что я вошел в систему).

Оба сайта в настоящее время работают локально через apache.

TIA.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

вместо повторного перенаправления таким образом:

header('Location: ' . $redirect);
exit; 

используйте это:

return redirect($redirect);

Laravel имеет свой собственный метод перенаправления, который лучше использовать вместо него. также перенаправление на ваш путь и выход в конце, уничтожает идентификатор пользователя, который был сохранен в сеансе, поэтому предполагается, что пользователь не вошел в систему.

0 голосов
/ 01 мая 2020

Вы расширили Authenticatable в вашей AccountLogin модели?

Вы можете попробовать использовать функцию loginUsingId($id, $remember = false) с идентификатором пользователя.

...