Kohana使用auth模块session_type选择database时无法写入session的问题解决
2012-05-16 16:33
295 查看
把用户登陆的session写入数据库,于是配置auth如下:
config/auth.php:
session的配置如下:
config/session.php:
其中 “key”的值是默认没有的,正是因为这个值的原因才导致的上面的问题。
config/auth.php:
return array( 'driver' => 'orm', 'hash_method' => 'md5', 'hash_key' => 'comasa', 'lifetime' => 43200, 'session_type' => 'database', 'session_key' => 'auth_user', );
session的配置如下:
config/session.php:
return array( 'native' => array( 'name' => 'session_name', //'lifetime' => 43200, //默认浏览器关闭时销毁 ), 'cookie' => array( 'name' => 'cookie_name', 'encrypted' => TRUE, 'lifetime' => 43200, ), 'database' => array( 'name' => 'database_name', 'encrypted' => TRUE, 'lifetime' => 43200, 'group' => 'default', 'table' => 'sessions', 'columns' => array( 'session_id' => 'session_id', 'last_active' => 'last_active', 'contents' => 'contents' ), 'gc' => 500, ), );
运行用户登录,提示登录成功,但是刷新页面就会继续提示登录,查看数据库的sessions表,session数据根本没有写入,很奇怪,刚开始还以为是session没有配置好,在代码中单独存储一个session进行测试,session正常写入,看来不是session的问题,难道是auth配置的问题?
再次将auth中“session_type”的配置改为"native"后,运行一切正常,登录也是好的,然后在网上各种找原因,并跟踪源代码,最后发现是因为没有配置"encrypted"的key值。因为在session的配置中,database的驱动"encrypted"的值为TRUE,也就是说存储是时进行加密,所以也要配置key的值。因此配置如下:
config/encrypt.php
return array( 'default' => array( /** * The following options must be set: * * string key secret passphrase * integer mode encryption mode, one of MCRYPT_MODE_* * integer cipher encryption cipher, one of the Mcrpyt cipher constants */ 'key' => 'comasa', 'cipher' => MCRYPT_RIJNDAEL_128, 'mode' => MCRYPT_MODE_NOFB, ), );
其中 “key”的值是默认没有的,正是因为这个值的原因才导致的上面的问题。
Kohana中这个值默认没有提供,但是session的配置里面又默认encrypted的值TRUE,而且session登录还不报错,这就太坑爹了啊……(也许是出于安全考虑,让开发者自己设置一个key,避免所有key都一样,容易破解,但是你好歹也在开发手册中提一下啊)。
相关文章推荐
- Kibana解决使用Custom无法正确选择时间的问题
- WdatePicker日期选择控件使用时,Internet Explorer无法打开站点,已终止操作”问题的解决
- 解决API中无法使用session问题
- WdatePicker日期选择控件使用时,Internet Explorer无法打开站点,已终止操作”问题的解决
- 解决oracle dblink中无法使用从远程表选择的lob定位器的问题
- VMware player使用桥接模式 - 解决无法选择桥接网卡的问题
- 工作中的问题解决 -- (win2003 asp.net) Session和带页面回传的方法无法正常使用解决方案
- 解决ThinkPHP5使用uploadify上传文件session无法传递的问题
- 使用UIAutomator在Android6.0执行,无法向手机SD卡写入内容问题的解决
- Win7系统下Vmware虚拟机无法使用USB设备问题的解决方法
- 仅仅需一步教你解决Win10下Android Studio terminal无法使用的问题
- 解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题
- VC6.0使用出现APPCRASH 一直无法解决的问题
- 解决AJAX中使用UpdatePanel后再用Response.Write();等无法弹出对话框问题(转)
- 解决使用EclipseDebug进入到JDK源码无法查看运行时变量的问题
- Spring使用OpenSessionInViewFilter解决Hibernate的lazy延时加载问题
- 使用 StateServer 保存 Session 解决 Session过期,登陆过期问题。
- 使用OpenSessionInViewFilter解决session关闭问题
- 还为使用google搜索找不到自己要的技术文章吗?彻底解决访问google域名地址搜索网站间歇访问无法找到服务器的问题
- 解决webapp中使用cordova调用本地相册,在ios设备上无法显示图片的问题