質問編集履歴
2
ビュー、VerifyCsrfToken.phpのソースを追加
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
タイトルを修正、ユーザー別の現象について記述修正
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
|
-
|
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にすることで、解決していました。
|