質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

7928閲覧

AJAX後、loginのsessionが切れていた場合の挙動変更(laravel5.5)

kazoogon

総合スコア281

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/05/29 17:08

編集2018/06/01 07:37

今していること

学校システムを構築中、その中で先生を予約する機能をajaxで行う実装を完了(laravel5.5, vue.js/axios)

実現したいこと

(現在)
AJAX通信後、loginのsession情報が切れていた場合
→そのまま直でloginページに移動する

(希望)
「申し訳ございません、もう一度loginし直してください」
などのsweet alert表示後に、login画面に移動する

試してみたこと

//こちらがAJAX通信先APIのconstruct関数 public function __construct() { $this->middleware('auth') } //これを下記のようにしてみる public function __construct() { if($this->middleware('auth') == false){ return response()->json([ 'result' => false, 'comment' => "Login again please" ]); } } //JS側のコード //しかし上記のlaravelコードでは返り値をエラーとして読み込んでしまう axios.post('/ajax/reservation_calender/reserve', data) .then(function(res){ if(res.data.result == false){ // self.rows = res.data.rows; swal({ //↓この内容を表示後、login画面に映りたい title: res.data.comment, text: "You couldn't reserve" +"\n", icon: "warning", }); }else{ swal({ title: "Reserved!", text: "teacher : " + res.data.lesson_info[0].teacher.name +"\n" + "date : " + res.data.lesson_info[0].date + "\n" + "time : " + res.data.lesson_info[0].time.time, icon: "success", }); } }).catch(function (error) { swal({ //**I think its better to send email to me(kazu) here title: "Sorry, you couldn't reserve", text: "Try again please" +"\n", icon: "warning", }); })

よろしくお願いいたします。

回答を受けての追記

「返り値をエラーとして」の意味といたしましては、
.then(function(res)内で処理したいが、login session情報が切れていた場合.catch(function (error)で処理してしまう。ということです

答えのコードを記入

.catch(function (error) { if(error.response.status === 401){ swal({ //**I think its better to send email to me(kazu) here title: "Login again please", text: "your login data is expired" +"\n", icon: "warning", }); window.location.href = "{{URL::to('login')}}" }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/05/30 00:19

「返り値をエラーとして」とは?起きた現象を具体的に(できればコード外に)記載してください。
kazoogon

2018/05/30 07:05

回答ありがとうございます。 .then(function(res)内で処理したいのですが、login session情報が切れていた場合は.catch(function (error)で処理してしまう。ということです
m.ts10806

2018/05/30 07:41

質問本文に追記してください。こちらのコメント欄はデフォルト非表示のため、他の人の目に付きにくいです。
guest

回答1

0

ベストアンサー

ajaxでエラー時のエラー番号がセッションタイムアウトのときの番号であるときに、location.hrefでログインページに遷移するのはどうですか?

投稿2018/05/31 13:36

randr

総合スコア202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazoogon

2018/06/01 07:37

この方法でできました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問