Phiên bản mới hơn của Laravel (đúng) sử dụng POST để đăng xuất một phiên. Lý do cho việc này là GET/HEAD chỉ nên được sử dụng cho các hành động thụ động để tuân thủ HTTP.Cách đăng xuất khỏi phiên hết hạn trong Laravel 5.x?
đăng với một CSRF token cũng bảo vệ độc hại sử dụng/trang web từ đăng nhập bạn ra khỏi các phiên của bạn: https://security.stackexchange.com/questions/62769/must-login-and-logout-action-have-csrf-protection
Tuy nhiên nếu phiên đã hết thời gian, và người dùng nhấp logout (mà gây nên một POST đến tuyến đăng xuất) nhận được lỗi không khớp mã thông báo. Điều đó có ý nghĩa - mã thông báo không khớp, bởi vì phiên đã hết hạn.
Tôi chỉ có thể nắm bắt được TokenMismatchException cụ thể dựa trên các biến yêu cầu, và nếu có, tiếp tục chúng theo cách vui vẻ của chúng (đến đường dẫn chuyển hướng đã đăng xuất, nói "home" hoặc "/"). Như thế này:
public function render($request, Exception $e)
{
if ($e instanceof TokenMismatchException && $request->getRequestUri() === '/logout') {
return redirect('/');
}
return parent::render($request, $e);
}
Câu hỏi của tôi là: nếu tôi làm các việc trên, là những gì các điểm token ở nơi đầu tiên? Và cách bạn đăng xuất người dùng khi phiên của họ hết hạn trong khi vẫn duy trì kết quả dự định khi sử dụng đăng xuất POST bằng mã thông báo CSRF?
Trong trường hợp cần thiết bảo vệ đăng xuất: http://security.stackexchange.com/questions/62769/must-login-and-logout-action-have-csrf-protection/62797 Để trả lời câu hỏi của bạn, vui lòng cung cấp cho tôi thông tin, loại mechanizm là timeouting phiên của bạn? – Mkay1
@ Mkay1 giả định bất kỳ loại thời gian chờ nào (thời gian chờ phiên, phiên bị hủy, v.v.). Liên kết bạn cung cấp được liên kết giống nhau trong câu hỏi của tôi – Chris