当前位置: 首页 > 知识库问答 >
问题:

注销只需重定向到codeigniter中的登录页面

上官鸿朗
2023-03-14

我创建了这样的功能来控制用户的登录和注销:

<?php

if (!defined('BASEPATH'))
exit('No direct script access allowed');

class Control_auth extends CI_Controller {

public function __construct() {
    parent::__construct();
    $this->load->library(array('session'));
    $this->load->helper('url');
    $this->load->model('model_user');
    session_start();
}

public function index() {
    $this->load->view('view_login');
}

public function check_login() {
    $data = array('username' => $this->input->post('username'),
        'password' => $this->input->post('password')
    );

    $hasil = $this->model_user->check_user($data);

    if ($hasil->num_rows() == 1) {

        $akses = $this->input->post('level');

        foreach ($hasil->result() as $sess) {
            $sess_data['logged_in'] = 'logging';
            $sess_data['username'] = $sess->username;
            $sess_data['level'] = $sess->level;

            $this->session->set_userdata($sess_data);
        }

        /* administrator */
        if ($this->session->userdata('level') == 1 && $akses == 'Administrator') { 
            redirect('administrator/control_admin');
        } else {
            echo " <script>alert('Gagal Login: Pilih Hak Akses');history.go(-1);</script>";
        }
        /* member */
        if ($this->session->userdata('level') == 4 && $akses == 'User') {
            redirect('control_member');
        }            
    } else { //false
        echo " <script>alert('Gagal Login: Cek username , password, dan hak akses Anda !');history.go(-1);</script>";
    }
}

public function logout() {
    $this->session->unset_userdata(array('username' => '', 'logged_in' => FALSE));
    $this->session->userdata = array();
    $this->session->sess_destroy();
    redirect('control_auth');
}

}

问题是,当我注销时,它只是重定向到登录页面。因此,在像火狐这样的浏览器中,当点击箭头历史记录时,它仍然可以访问主页。任何解决方案都将是合理的...

共有3个答案

陈野
2023-03-14

添加

session_destroy();

在您的注销功能中,尝试。。。。

罗渝
2023-03-14

注销时只需清除缓存

header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache"); 
header("Expires: 0"); 
端木乐语
2023-03-14

您必须在control_admin功能中添加此代码,以检查此用户是否登录。

    if(!empty($this->session->userdata['username'])){
   //add your code here if logged in
         $this->load->view('yourpagename');
      }else{
       redirect('control_auth');
   }
 类似资料:
  • 我正在使用带有java配置和两个HttpSecurity配置的spring-security 3.2.0.rc2。一个用于REST API,一个用于UI。当我发布到/logout时,它重定向到/login?logout,但随后(错误地)重定向到/login。当我成功地输入用户名和密码时,我会被重定向到登录-注销,并且必须再次输入凭据才能进入主页面。因此,似乎login的permitAll不被用于l

  • 问题内容: 我有一个网站,有一个用户系统。我想将wordpress的用户系统集成到该网站的系统中,但是我仍然想使用该网站的注册/登录页面。我不希望任何人都能使用Wordpress的登录或注册表格进行登录或注册。相反,当他们尝试访问Wordpress中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面。 有什么办法吗?我已经尝试过Google,但是我所能找到的只是在用户登录或注册

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 当(在Spring Security/MVC中)页面访问被拒绝时,由于用户没有足够的权限(尽管他已通过身份验证),我需要通过显示登录页面(而不是显示403拒绝访问页面的标准行为)提供作为另一个用户登录 我可以编写一个,重定向到登录页面。但是,当Spring Security发现有另一个用户登录时,它会做出怎样的反应?当新用户已成功通过身份验证时,我能否以某种方式注销旧用户?

  • 我现在一直在努力使用我的登录页面来让组件呈现Loggedin组件。我的前端是Reactjs,后端是NodeJS。我对nodejs、expression和react都是新手。 在loginform组件上,我使用fetch进行了一次post,它将用户名和密码传递给后端的相应endpoint。没问题。在后端,它读取我存储用户(不使用任何数据库)的jsonfile来查找匹配项,如果用户名和密码都匹配,则它

  • 我在Laravel框架中的HomeController.php中有一段代码,但是我无法访问它重定向到登录页面的索引/主页。我犯了什么大错?