CodeIgniter中的身份验证

时间:2010-02-26 14:28:25

标签: authentication codeigniter

在我正在创建的项目中我需要检查用户是否已登录,我看过的教程解释了如何在控制器中进行身份验证并提供对页面的访问权限。但我希望所有页面都可供所有人看到,但只有在用户登录时才会显示某些选项。

在视图中

这样的事情

if(is_logged_in()):
//some options here
else:
echo "you need to login to have more options";
endif;

那么我应该在哪里添加此代码?在帮助文件夹中?

编辑:我现在正在检查这样的观点,它有效,但我不知道这是否是最佳做法。 'is_logged_in'是我在验证凭据时设置为true的内容

if($this->session->userdata('is_logged_in'))

编辑:

所以,如果我帮助调用该函数。我可以使用userdata函数进行检查吗?

这是创建会话的功能

$data = array(
    'username' => $this->input->post('username'),
    //usertype toevoegen hier
    //email toevoegen
    //deposit money
    'is_logged_in' => true
    );
$this->session->set_userdata($data);

我如何在我的帮助文件中的函数中使用会话数据?

2 个答案:

答案 0 :(得分:5)

如果你想把它作为一个独立的功能,你可以从任何地方打电话,那么你最好把它作为帮手。将帮助器视为CodeIgniter工具箱中瑞士军刀的刀片可能会有所帮助。

通过这种方式,您可以稍后更改支票,移动所有内容,然后仍然拨打isloggedin()。但是,这两种方式都有效。 $this->user->isloggedin()稍微冗长一点,但提出了同样有用的关注点分离。

修改

如果您想在助手中调用会话数据,可以通过get_instance()进行调用。

在帮助文件的开头,执行以下操作:$CI =& get_instance();

function user_logged_in() {
    $CI =& get_instance();
    // Do what you want to do with session.
    // Simply replace $this->session ... etc. with
    // $CI->session ... etc.
...
}

答案 1 :(得分:0)

将它添加到视图中会很好,这就是表示逻辑。