我怎么能用codeigniter在php中做权限?

时间:2015-11-27 11:06:14

标签: php codeigniter

我已经构建了包含主题,用户,评论,用户个人资料和使用Codeigniter框架的会话的小PHP脚本,但我现在不知道如何为用户做权限,

我的意思是如何让只有注册的人可以添加主题和评论以及类似的东西

我尝试通过会话

if($this->session->userdata('is_logged_in'))
{
    // here something like add topic or comment buttons 
} 
我对了吗?这只是做权限的方式吗?或者还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:2)

你没有提到你使用的CI的版本,但是对于2.x(CodeIgniter v3要求类名是ucfirst()。)我发现ion_auth非常好并且很有风格。你可以在这里得到它。http://benedmunds.com/ion_auth/ 它有一些不错的功能,您可以通过指定的组或主要' logged_in'来限制某些视图/页面或方法。方法

放入构造中的脚本就像

一样简单
     if (!$this->ion_auth->logged_in()){
              redirect('auth/login', 'refresh');
 }

答案 1 :(得分:0)

我不认为这样的事情在ci中可用,但您可以使用user_type或对您的用户进行分类。

喜欢admin user_type =“admin”或1

对于客户user_type =“customer”或2

我已经在2年前实现了这个东西,直到现在它从来没有遇到任何问题,甚至进一步修改就像创建另一个组一样真的很容易。

答案 2 :(得分:0)

我看到你已经在数据库中有一个名为“users”的表,添加一个新列让我们在该表中称它为“privilege”,它将包含用户权限的代码,假设0代表admin,1代表顾客,2为客人等...

并且假设只有管理员和客户可以发表评论,因此您的代码将检查用户权限并做出相应的决定。

伪代码:

if($this->session->userdata('is_logged_in'))
{
     // let say the user_id is loaded in the session
     $user_id = $this->session->userdata('user_id');

     $this->load->model('user_mdl');
     $user_priv = $this->user_mdl->get_user_priv($user_id);

     if($user_priv == 0 or $user_priv == 1)
     {
        // here something like add topic or comment buttons 
     }
    else
    {
      // sorry you don't have permission to do comment or something interesting 
    }


} 

如果要对其进行规范化而不是在users表中有一列,您还可以创建一个新表“权限”并将其(通过外键)链接到用户。

希望有所帮助 干杯!