目前,在登录后,Lithium 将用户表中的所有行(如密码、哈希等)存储在会话和 cookie 中。如何删除(不允许存储)一些信息,如密码和哈希?
3 回答
Session 类存储你告诉它的内容!完成 Auth::check 后,您应该只在 cookie 中存储会话标识符和/或绝对必要的数据。还要确保使用开箱即用的锂 (AES) 提供的加密。
如需更详细的帮助,请发布您的登录控制器和所有适当的模型/过滤器。
将选项传递给Auth::check
也将传递给适配器(加上一些附加功能)——为此,我假设您正在为该类使用Form
适配器。Auth
执行检查时尝试这样做:Auth::check('config', $data, array('fields' => array('fields', 'you', 'want'))
这里的关键是我们在最后添加的带有fields
密钥的数组,这将被传递给Form
适配器,该适配器接受这些选项并使用它们来查询您的模型以查找匹配的用户。通过明确告诉它要返回哪些字段,它只会将这些字段传递回Auth
类以进行存储。
由于此提交,您可以将选项传递'persist' => array('field1','..')
给Auth::check
,或在引导会话配置中将它们设置为默认值,以仅存储指定的字段。
所以要么你在你的 bootstrap/session.php 中设置它
Auth::config(array(
'user' => array(
'adapter' => 'Form',
'session' => array(
'persist' => array('_id','username')
),
'model' => 'Users'
)
));
或者您在调用时定义字段Auth::check()
- 这将覆盖上面配置中的所有内容!
Auth::check('user', $this->request, array(
'persist' => array('username','email')
))
注意:如果未明确定义,默认情况下从不存储密码。