首页 > 解决方案 > 如何让合适的人访问此功能?

问题描述

基本上每个用户都有一组基于他们的角色(管理员、经理、卖家等)的权限,他们都可以选择编辑他们的个人资料,但我希望管理员能够编辑每个人的个人资料。

编辑功能看起来像这样(我正在使用 Codeigniter)

function edit($id)
{
 if(!in_array('editUser'))
 {
   redirect('home');
 }
 //rest of the code...
}

第一个想法是检查尝试编辑页面的用户的会话 id 是否与正在编辑的用户的 id 相同,但这会使管理员无法编辑每个人的个人资料。

希望今天能得到答复,谢谢您的帮助。

编辑

我通过添加另一个条件并反转它们来解决这个问题:

function edit($id)
{
 if(in_array('editUser', $perms) || $this->session->userdata('id') == $id)
 {
  //rest of the code...
 }else{
  redirect('home');
 }
}

标签: phpcodeigniterpermissionslogic

解决方案


登录用户时将角色存储在会话中并进行处理

例如

    if($this->session->userdata('role') == 'admin'){
      // Show admin folder files 
    }elseif($this->session->userdata('role') == 'normal_user'){
    // Other user folder files 
   }

谷歌中有很多基于角色的库可用于 Codeigniter 常用库链接


推荐阅读