ホームページ  >  に質問  >  本文

Laravelミドルウェアはユーザーがログインしていることを認識できません

Laravel 8 を使用しています。ミドルウェアを適用して、ユーザーが is_staff または is_superuser1 に設定しているかどうかを確認して、アクセスできるかどうかを確認したいと考えています。そうしないと、管理者ダッシュボードにアクセスできなくなります。

これを行うために、これを作成しました:

リーリー

問題は、redirect('/'); が返されることです。これは、ミドルウェアがユーザーがログインしていることを認識していないが、ユーザーはすでにログインしていることを意味します。

次のようにミドルウェアを登録しました:

リーリー

そしてそれを管理ルート (RouteServiceProvider.php) に適用します:

リーリー

これは admin.php ルート:

リーリー

それでは、何が問題なのでしょうか?この問題はどうすれば解決できますか?

P粉935883292P粉935883292231日前360

全員に返信(2)返信します

  • P粉354602955

    P粉3546029552024-03-26 21:14:39

    ルート全体が表示されているわけではありませんが、使用状況が記録されることはないと思います。

    あなたが申請できるのは次のとおりです:

    リーリー

    すべての管理ルート用。したがって、ログインフォームがあり、ログインデータを入力すると、ユーザーはこのミドルウェアも適用されているエンドポイントに到達するため、ミドルウェアが/にリダイレクトして戻るため、ユーザーが実際にログインしているコントローラーには到達しません。

    ログイン/リマインダーパスワードを除くすべてのルートにミドルウェアを適用する必要があります。そうしないとログインできなくなります。

    返事
    0
  • P粉797004644

    P粉7970046442024-03-26 20:56:59

    web ミドルウェアも管理ルートに追加する必要があると思います。

    リーリー

    Auth::check() 現在ログインしているユーザーをセッションから取得してみます。

    web ミドルウェア グループがセッションをアクティブ化し、多数のミドルウェアを適用します

    リーリー

    web がないとミドルウェア セッションは利用できません

    返事
    0
  • キャンセル返事