【问题标题】:when logouting a user session::flush() laravels wont work当注销用户 session::flush() laravel 不起作用
【发布时间】:2014-08-22 03:39:09
【问题描述】:
我正在使用 laravel 构建一个具有登录身份验证的站点,当用户注销时,他们仍然可以单击浏览器的后退按钮并喷出 .. 他们又回来了。所以这是我的代码使用 session::flush 删除会话,但它不会工作。
这是我的代码
公共函数signout()
{
Session::flush();
Auth::logout();
return Redirect::action('ViewController@signin');
}
【问题讨论】:
标签:
php
session
laravel-4
【解决方案1】:
通常,当用户在浏览器上点击“返回”时,他们的浏览器只会向他们显示页面的缓存版本。他们不应该能够与页面进行实际交互(即提交表单)或执行任何需要向服务器发出新请求而服务器未响应他们已注销的操作。
【解决方案2】:
使用过滤器可以解决这个问题。 (我还没有找到其他解决方案)首先,在filters.php中添加这段代码:
Route::filter('no-cache',function($route, $request, $response){
$response->header("Cache-Control","no-cache,no-store, must-revalidate");
$response->header("Pragma", "no-cache"); //HTTP 1.0
$response->header("Expires"," Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
});
然后将此过滤器附加到路由或控制器。我将它附加到控制器的构造函数中,如下所示:
public function __construct() {
$this->beforeFilter('csrf',array('on' => 'post'));
$this->afterFilter("no-cache", ["only"=>"getDashboard"]);
}