任意のURLのトークンによる認証を実行します。この認証は、ルートとトークンがusersテーブル(フィールドtoken
)に格納される前に呼び出されます。コンストラクタでユーザーを認証します
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