ホーム

転職ドラフト(次回10/20)

Laravelで401エラーが出てPOSTやアクセスができない時の対処法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

⇨ Laravel 記事の目次はこちら

Laravel で 401 エラーが出て POST ができない時の対処法について書いていきます。

基本的に 401 エラーが出た時は認証関係  のエラー(認証がうまくいっていない)なのですが、具体的にどんなケースがあるのか書いていきます。

少し当たり前な部分もありますが、可能性的にありえるものは書いていきたいと思います。

目次

  1. セッションが時間切れの可能性がある
  2. 認証が必要なルートに未認証でアクセスしている
  3. フォームリクエストの authorize が false になっている
  4. (API のとき)トークンの有効期限が切れている。
  5. マイグレーションで DB を fresh した後に、パスポートのコマンドを打っていない

セッションが時間切れの可能性がある

これはコードのバグというよりは、操作を長いことしていなかった(休憩していたなど)可能性があります。

ページの更新(Command+R)をして、ログインされている状態かどうか一度確認してみましょう。

ログインできていなければ、ログインしてあげれば動くはずです。

チェックした方が良い内容

○ ログインできていない時の画面とログインできている時の画面は変えているか?

○ セッションの持続時間はどのような設定になっているか?

認証が必要なルートに未認証でアクセスしている

項目の通りなのですが、

Route::group(['middleware' => ['auth','verified']], function () {
  Route::get('/user', 'UserController@index');
});

このように認証が必要なルートにアクセスしようとしているのにもかかわらず、自信がログインしていない可能性があります。

⇨ ログイン認証したユーザーだけが使えるルーティングの書き方

フォームリクエストの authorize が false になっている

バリデーションをフォームリクエストで実装している場合、

    public function authorize()
    {
      //trueが認証必須
        return true;
        //falseは認証いらない
        // return false;
    }

にする必要があります。

(API のとき)トークンの有効期限が切れている。

開発中ではあまりありませんが、Laravel パスポートの場合、token の有効期限は確か初期値で1年だったりします。

そういった有効期限があることは覚えておいて良いと思います。

マイグレーションで DB を fresh した後に、パスポートのコマンドを打っていない

php artisan migrate:fresh

すると、Laravel パスポートで必要になる oauth 系の DB が空になってしまうので、

php artisan passport:install

し直す必要があります。

まとめ

Laravel の 401 エラーが出た時の対処法として、5つあげてみました。

他にもいろんなケースがあると思いますが、何か思い当たるところがあればぜひ Twitter の DM や記事 URL とともにつぶやいていただければ助かります!

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする