2017-09-07 6 views
0

私は、各行の各カテゴリのカテゴリリストと削除ボタンを表示するテーブルを持っています。削除アクションは、以下のルートを使用してajaxコール経由で動作します。「メソッドは許可されていません」セッションの終了時にajaxコールに返される

Route::delete('category/delete/{id}','[email protected]')->name('category.delete'); 

これは問題なく動作します。しかし、その後、私はページを開いたままにして、ページがまだ開いている間しばらくして戻ってきました。今私がカテゴリを削除しようとしたときメソッドが許可されていません私のコントローラからのエラーです。私はセッションが期限切れになっていることと関係があると思います。

私の質問は以下のとおりです。
1.これは例でセッションの有効期限が切れていると、ユーザは(AJAX経由)保護されたルートにアクセスしようとしたときにように私は、サーバー側でこれを処理するにはどうすればよい
2.起こっている理由サーバーはセッションの有効期限を検出し、特定の応答をajax呼び出しに送信するか、ユーザーをログインページにリダイレクトします。

私のajax呼び出しでは、サーバーから返されたjson型が必要です。

おかげで、

+0

どのバージョンのLaravel? 'api'ルーティングを使用していますか?もしそうなら、セッションはそれを通過せず、手動でそれをチェックしたり、ミドルウェアを追加する必要があります。 –

+0

セッションが期限切れになった場合は、ログイン(302)にリダイレクトするか、または401応答コードを与えます。リクエストのレスポンスコードを確認する必要があります。 –

+0

@UnamataSanatarai:いいえ、私はAPIルーティングを使用していません。 –

答えて

1

セッションの有効期限が切れ、認証を必要とするすべてのルートが/ログインエンドポイントにリダイレクトし、それが唯一のget&postdeleteが失敗したからです。

考えられる解決策:

  • セッション継続時間(デフォルトは120分です)
  • は、ユーザーが自身
  • ログインページに移動するために401のと window.location.reload()ブラウザウィンドウを検出するためにjqueryのインターセプタを追加増やします
  • スクリプトにタイマーを入れて〜5分おきにサーバーに「ping」してセッションをバンプさせます
+0

** 405 **を意味しましたか?私は** 405 **と** 401 **を得ています。また、着信要求のセッション検証をチェックし、ログインページにリダイレクトするミドルウェアのようなサーバー側のソリューションもあります。 Authミドルウェアは、私のルートがAuthミドルウェアによって保護されているので、Authミドルウェアはすでにそれを行うべきだと思います。しかし、それはそうではありません! –

+1

ajaxだけがauth checkにヒットし、ブラウザ自体ではなくログインにリダイレクトされます。あなたのケースでは、最大限のカバレッジを得るために405と401をチェックすることができます – Quezler

関連する問題