我正在学习codeigniter。用户在单击注销按钮后登录后返回登录页面,但如果他点击浏览器后退按钮,则会再次返回连接页面。所以会话保存在浏览器中。如何重定向到登录页面。
码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('user_model');
}
public function index()
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['nom'] = $session_data['nom'];
redirect('user/connection_Ok');
}
else
{
//If no session, redirect to login page
$this->login;
}
}
public function logout()
{
$this->session->unset_userdata('logged_in');
// session_destroy();
$this->session->sess_destroy();
redirect('login');
}
答案 0 :(得分:0)
当他点击退出按钮时,他返回登录页面,但如果他点击浏览器后退按钮,他会再次返回连接页面。因此会话保存在浏览器中。
我认为这里有一些混乱......如果他点击“退出”,你的logout
控制器就会破坏会话期间。使用浏览器的“后退”按钮无法撤消此操作或恢复其会话。
换句话说,仅仅因为缓存的页面“看起来像”他仍然登录,并不意味着他仍然登录。一旦他试图访问受限制的内容,他将不会被授权,因为他的上一次会议是已经被摧毁了。
如何重定向到登录页面。
您无法阻止用户点击浏览器的“后退”按钮,也无法轻松控制用户执行操作时会发生什么。浏览器只是加载上一页的缓存版本而不重新加载它...它只是浏览器的工作方式。
JavaScript可以让您访问浏览器历史记录等内容,但是没有完全可靠的方法来拦截“后退”按钮。无论comprehensive or complex the solution如何,用户都可以简单地禁用JavaScript并将其击败。
但是,如果您编写一个强大的授权系统,则用户将在未登录的情况下尝试访问受限制的内容时自动进入登录页面。
仅供参考 - 对于CodeIgniter,我建议您使用经过验证的授权系统,这样您就不必重新发明轮子或担心安全问题。我喜欢Ben Edmund's Ion Auth,但CodeIgniter还有其他一些解决方案......只是做你的研究。
答案 1 :(得分:0)
标题为:
Invalidate and Restart
PS:HTML页面中不需要任何Cache-Control: no-cache, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0
标签; http标头优先。