CodeIgniter中的身份验证

Chr*_*phe 2 authentication codeigniter

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

在视图中这样的东西

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

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

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

if($this->session->userdata('is_logged_in'))
Run Code Online (Sandbox Code Playgroud)

编辑:

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

这是创建会话的功能

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

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

Sea*_*ira 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.
...
}
Run Code Online (Sandbox Code Playgroud)