使用codeigniter开发我的最新项目。话虽如此,处理登录会话的“最佳”方式是什么?现在,我检查数据库的用户名/密码。如果它匹配,我设置各种会话变量,其中一个是用户名。在我的网站中,我检查用户是否已登录。我还阅读各种博客,人们实际上根据某种类型的php会话ID检查会话。
所以我想我的问题是,有哪些方法可以确保网站安全?显然我不会在cookie中保留任何内容,会话将保存在某种数据库表中。
答案 0 :(得分:4)
你肯定是在正确的轨道上。
使您的登录过程安全:
我没有亲自使用过CodeIgniter,但我很确定像这样的成熟框架会有一些类来处理默认情况下内置的问题。
以下是CI link
中的身份验证快速教程答案 1 :(得分:0)
无论你保存到会话中它都非常安全,因为它只保存在你的(希望不是共享的)主机服务器上。如果您想使用cookie,请仅存储通过数据库链接到用户数据的令牌。我也很确定ci有一个基本的auth模块,如果不是为了一个好的auth模块和ORM善良而不能迟到kohana。
答案 2 :(得分:0)
CodeIgniter不使用本机PHP会话。它生成自己的会话数据。您需要通过调用$this->load->library('session');
来加载库“会话”。
我所做的是在用户使用Encryption类注册时加密密码。这是通过调用$this->load->library('encrypt');
然后调用$this->encrypt->encode("user_password")
来完成的。您需要通过在config.php
文件中写入来指定加密密钥:$ config ['encryption_key'] =“您的密钥”; 。
然后,为了验证凭据,我从数据库中获取加密密码并调用$this->encrypt->decode("user_password")
并检查它是否与用户编写的密码匹配。
验证凭据后,我在CodeIgniter的会话中保存了我想要存储的信息。这是通过使用所需参数设置数组然后调用$this->session->set_userdata($newdata);
来完成的。
示例(从http://codeigniter.com/user_guide/libraries/sessions.html复制):
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
然后,要检查用户是否已登录,您只需在每个方法中测试用户是否通过调用以下内容登录:$this->session->userdata('logged_in');
要注销用户,只需销毁会话:$this->session->sess_destroy();
。
根据我的经验,框架为您做了一些事情: