我正在Codeigniter中处理这个项目,我创建了登录和注册脚本,但我不知道如何在每个页面上验证用户。 当用户登录会话中存储的数据(Ci session user_data)时,如果会话有效,我可以将它与每个页面上的数据库进行比较吗? 我正在使用codeigniter的会话类,我将值自动存储在数据库中。请帮助我,我被困在这里......
我的会话处理方式如下:
1。当任何用户到达我的网页时,他会获得在加载页面时检查的唯一散列(md5)会话ID。如果它不存在则不会产生任何新的。它每5分钟改变一次
2.当用户登录要传递的数据时,我可以稍后将其与数据库进行比较(在每个页面加载时)
我不知道是否只存储'is_logged'= 1 cookie是安全的。我想在每个服务器请求上检查cookie。
答案 0 :(得分:4)
成功登录后,您可以创建
$this->session->set_userdata(array('authorized' => true));
然后你可以创建一个auth库或一个模型方法,任何适合你的东西,只检查这个会话数据是否存在。
function is_logged()
{
return (bool)$this->session->userdata('authorized');
}
如果为FALSE,则不记录用户,如果为TRUE则为。您可以在需要置于身份验证之后的每个控制器方法上调用此函数,或者在controllr的构造函数中调用此函数(如果您需要所有方法)(例如,管理面板)
看看,例如,关于CI中的主流Auth库之一Ion Auth如何处理事物(使用与我的示例代码中相同的logged_in()方法。请记住,会话是加密的,如果存储在数据库中的安全性更高); https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/libraries/Ion_auth.php
答案 1 :(得分:1)
会话存储在服务器上,因此无需验证。您只需要验证会话中的内容。
会话由提供session_id cookie(PHPSESSID
)的用户进行身份验证。
另一方面的Cookie确实需要验证,但不应使用cookie来存储关键数据,因此它有点没有实际意义。
答案 2 :(得分:0)
你应该在helper中编写一个函数,比如session_helper.And在你的类的构造函数中调用这个帮助方法。如果你的用户正确登录然后它会继续,否则它将重定向到登录页面。你的助手应该像这样
function session_set()
{
$ch=&get_instance();
if($ch->session->userdata('your_session_id')=='')
{
redirect('your_login_page');
}
并且在控制器中你应该像这样检查(构造函数)
session_set();
希望这对你有用