在codeigniter web应用程序中使用会话数据(角色)来设置用户管理是否合适?


Is it good to use session data (role) to set user management in codeigniter web application?

在我使用codeigniter的web应用程序中,我存储了在会话之前从数据库查询的角色数据。

$role = $this->session->userdata('role');

在每个模型或控制器中,我总是使用这个变量($role)来管理我的web中的用户行为。

if($role==1)
{
//Behaviour for admin.
}
else if($role==2)
{
//Behaviour for general user
}
else
{
//Do something
}

我的问题:如果很多用户登录我的系统,会话数据总是丢失,没有点击注销之前。谢谢。

供您参考:我已经将角色存储在数据库中,但是为了简单的方法,我之前得到的角色值,我将其存储在会话中。为了简单的解决方案。谢谢。

将角色存储在数据库中的users表中。我的应用程序中有4个角色学生,教职员,管理员,校长。

然后根据输入的用户名查询数据库,

如果role = 1,则发送到相应的页面。

就像这样:

$sql = "SELECT * FROM users WHERE username = :username AND role = 1";
$role = $this->db->conn_id->prepare($sql);
$role->bindParam(':username', $username);
$role->execute();
if ($role) {
    if ($role->rowCount() == 1) {
        return TRUE;
    }
}

然后在控制器中做

if ($this->yourmodel->yourfunction($yourvariable)) { // Checks if the query above returns TRUE!
    redirect(to what ever page you want)
}