Я хочу выполнить аутентификацию с помощью токена в любом URL-адресе. Эта аутентификация вызывается перед маршрутами, а токен хранится в таблице пользователей (поле token
).Authenticate user on constructor
При обращении к URL mysite.com/backend/?token=XXX&anyparam=any
, если токен действителен, пользователь должен быть перенаправлен на mysite.com/backend/?anyparam=any
.
Я пытаюсь выполнить аутентификацию на конструкторе контроллера, поэтому, если у URL-адреса есть действительный токен (соответствующий токену пользователя), пользователь должен пройти аутентификацию.
public function __construct(Request $request)
{
// url with token
if($request->has('token')) {
$new_url = $request->url() . '/?' . http_build_query($request->except(['token']));
$user = User::where('token', $request->input('token'))->first();
Auth::login($user);
//dd(Auth::user()); // says the user is authenticated
return redirect($new_url)->send();
}
}
Однако после перенаправления пользователь больше не аутентифицирован.
Что мне не хватает?
Кроме того, процесс создания токенов не имеет ничего общего с этой проблемой.
'__constructs' не имеют возвращаемых значений. Они всегда возвращают 'void'. С учетом сказанного, поскольку вы используете токен для авторизации пользователя, я могу предположить, что вы также используете какой-то пакет, чтобы заботиться о генерации маркера. Если это так, нужна дополнительная информация. – Andrew
Можете ли вы описать, по какой причине вам нужна аутентификация в конструкции? Возможно, есть еще одно решение: – Dmytrechko
@Andrew проверить отредактированный вопрос. – Yurich