laravel預設開啟csrf,使用的是csrf_token()產生一個隨機字串保存在瀏覽器和session檔案中.然後根據瀏覽器傳回的cookie來找到對應的session檔,取得其中的token進行比較.
但是問題是如果使用負載平衡,配置幾台伺服器,就無法透過保存在伺服器上的session檔案來取得token進行驗證,多台伺服器對應一個網站,如何使用laravel的csrf防禦呢?是不是可以設定session檔案共用來解決這個問題?如果是的話,nginx上應該如何設定呢?
为情所困2017-06-05 11:11:22
這和 nginx 沒有什麼關係, 你需要的是修改 Session Driver
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file');