質問するログイン新規登録

質問編集履歴

2

ビュー、VerifyCsrfToken.phpのソースを追加

2020/10/20 07:07

投稿

hashed_pole_mec
hashed_pole_mec

スコア0

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  session_idが切り替わってしまうため、フォーム送信前にセットした値が取得できません。
9
9
 
10
- 9割のユーザーで正常に(session_id変更も起こらず)サイト利用できています。
10
+ 9割のユーザーで正常に(TokenMismatchException、session_id変更も起こらず)サイト利用できています。
11
11
  1割のユーザーでsession_id変更が起こります。
12
12
  同様に1割のユーザーで画面遷移時にログイン状態が外れる現象も起こっていました。
13
13
  今回その同じユーザーで、session_id変更のためGET通信しかできないような状態です。
@@ -25,6 +25,35 @@
25
25
  }
26
26
  ```
27
27
 
28
+ csrf_field()記述部分です。
29
+ ```HTML
30
+ <form action="/sample/confirm" method="POST">
31
+ {{ csrf_field() }}
32
+ ...
33
+ </form>
34
+ ```
35
+
36
+ 問題切り分けのためVerifyCsrfToken.php にて、CSRF認証対象から外しました。
37
+ ```PHP
38
+ <?php
39
+
40
+ namespace App\Http\Middleware;
41
+
42
+ use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
43
+
44
+ class VerifyCsrfToken extends Middleware
45
+ {
46
+ /**
47
+ * CSRFバリデーションから除外するURI
48
+ *
49
+ * @var array
50
+ */
51
+ protected $except = [
52
+ 'sample/confirm',
53
+ ];
54
+ }
55
+ ```
56
+
28
57
  ### 試したこと
29
58
 
30
59
  Controllerからさかのぼって調べていくと、

1

タイトルを修正、ユーザー別の現象について記述修正

2020/10/20 07:07

投稿

hashed_pole_mec
hashed_pole_mec

スコア0

title CHANGED
@@ -1,1 +1,1 @@
1
- Laravel5 POST時にsession_idが切り替わってしまう
1
+ Laravel5.5 POST時にsession_idが切り替わってしまう
body CHANGED
@@ -1,15 +1,16 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Laravelでログインユーザーが使用するサイトを作っています。
3
+ Laravel5.5でログインユーザーが使用するサイトを作っています。
4
4
  フォームをPOST送信時にTokenMismatchExceptionが発生しました。
5
5
  csrf_field() は記述していて、試しにCSRF認証を外してみたところ
6
6
  POST後にsession_id( Session::getId() )が切り替わっていることがわかりました。
7
7
 
8
8
  session_idが切り替わってしまうため、フォーム送信前にセットした値が取得できません。
9
9
 
10
- ほとんどのユーザーで正常にサイト利用できていますが、
10
+ 9割のユーザーで正常に(session_id変更も起こらず)サイト利用できています
11
+ 1割のユーザーでsession_id変更が起こります。
11
- 一部ユーザーで画面遷移時にログイン状態が外れる現象も起こっていました。
12
+ 同様に1割のユーザーで画面遷移時にログイン状態が外れる現象も起こっていました。
12
- 今回その同じユーザーで、GET通信しかできないような状態です。
13
+ 今回その同じユーザーで、session_id変更のためGET通信しかできないような状態です。
13
14
 
14
15
  ログイン状態が外れる現象については、
15
16
  以下のように、loginUsingIdの第2引数rememberをtrueにすることで、解決していました。