3 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊
如前所述,最簡單的解決方案通常是將會話過期時(shí)間從默認(rèn)的 2 小時(shí)(非常短)延長。
如果不需要更長的會話,另一種選擇是使用 javascript 使會話保持活動狀態(tài),只要瀏覽器頁面處于打開狀態(tài)。
在routes/web.php 中添加路由:
Route::post('/keep-alive', function () {
return response()->json(['ok' => true]);
});
然后使用 javascript 定期 ping 這條路線:
setInterval(() => {
axios.post('/keep-alive')
.then(() => {})
.catch(() => {})
}, 600000)
(我使用 axios 發(fā)出 POST 請求,因?yàn)樗谀J(rèn)的 Laravel 安裝中,但您可以使用任何東西來發(fā)出請求。)
由于請求通過web中間件組,因此應(yīng)該運(yùn)行會話中間件并保持會話處于活動狀態(tài)。如果瀏覽器頁面關(guān)閉,計(jì)算機(jī)進(jìn)入睡眠狀態(tài)等,那么在配置的時(shí)間過去后,會話仍將正常過期。
您還可以檢查來自 javascript 調(diào)用的會話過期響應(yīng),然后刷新頁面、提示輸入憑據(jù)或在檢測到會話過期時(shí)執(zhí)行一些其他操作。如果計(jì)算機(jī)從睡眠狀態(tài)恢復(fù)運(yùn)行,則最有可能發(fā)生這種情況。

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個贊
您注意到自己可以在 中更改會話時(shí)間config/session.php。你有什么不想改變的理由嗎?
或者,假設(shè)這不是可在萬維網(wǎng)上訪問的應(yīng)用程序并且僅供 Kiosk 使用,您可以完全排除某些路由需要 CSRF 令牌;
編輯**$except**VerifyCsrfToken中間件的屬性;
protected $except = [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
];
從Laravel 文檔中獲取的信息。
- 3 回答
- 0 關(guān)注
- 217 瀏覽
添加回答
舉報(bào)