当使用哨兵在Laravel中实现身份验证并注销时,如果我按"返回一页"任何浏览器的按钮,它都会返回到仪表板。如果页面刷新,它将根据需要转到登录页面。但是我想防止在不刷新的情况下访问仪表板。
- 注销后如何立即删除此特定页面的缓存?
- 如何找出任何浏览器对页面的特定缓存以及 Laravel 的方法?
:注:注销并以这种方式转到仪表板后,可以防止根据需要更改任何内容。
调用注销函数时销毁会话。只需在控制器中编写注销功能,如下所示:
public function getLogout() {
Sentry::logout();
Session::flush(); // Insert this line, it will remove all the session data
return Redirect::to('users/login')->with('message', 'Your are now logged out!');
}
编辑:
首先,我只使用了 Session:flush(),不知何故它起作用了!但是当我再次检查时,我发现它不起作用。因此,我们需要添加更多代码以在注销时清除浏览器缓存。
使用过滤器可以解决此问题。(我还没有找到任何其他解决方案)首先,在筛选器中添加此代码.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"]);
}