onethink user/conf/config.php,onethink中修改ucenter用户的密码

onethink安装好之后,数据库中的两张表(忽略表前缀):ucenter_member和member表将作为用户表存在。在Admin后台新增用户时,这两张表将进行插入操作。

不过,如果想自己在前台注册用户的时候(仍然使用这两张表),需要注意一些地方:

注册用户时,需要插入到ucenter_member表和member表,这些操作可以这样完成:使用User模块的User/Api/UserApi.class.php的register方法写入ucenter表、然后再

用M('member')来插入到member表。详细的方法就不写了,thinkphp框架会的应该都能写出来。

当你想写个修改密码的功能时,你可以操作UserApi对象的updateInfo方法来完成(需要传参:uid,旧密码,新密码(数组形式))来完成。

问题是:如果你想写个找回密码的功能,这时updateInfo方法就没法帮你了,因为你需要传入旧密码才能修改新密码。此时,如果你直接MD5加密之后扔进ucenter_member

表,则会造成这样的结果:你再次用这个用户的账号密码登录时,你发现密码不正确,登录失败!

问题的原因是:你直接进行了md5加密,但是你在注册用户的时候,可不是简单的md5加密之后塞入数据库的,其实密码经过了think_ucenter_md5()函数加密,至于为什么是

这个函数进行加密,你可以从User/Model/UcenterMemberModel.class.php的自动完成$_auto里看到。在think_ucenter_md5方法里传入两个参数:第一个是密码,第二个是常量

UC_AUTH_KEY,这个常量可以在User模块的配置文件Conf/config.php里查看到,而且这个常量是安装onethink的时候随机生成的字符串,用于ucenter用户加密。

知道了问题的原因,那么解决办法就很明了了:

在“找回密码”的时候,只要把新密码和UC_AUTH_KEY的值丢进think_ucenter_md5方法里,返回来的值插入到数据库里即可。

本人测试之后,发现登录结果变成功了。

补充:think_ucenter_md5函数在User模块的Common/common.php里,你可以看到具体的加密过程:

/**

* 系统非常规MD5加密方法

* @param string $str 要加密的字符串

* @return string

*/

function think_ucenter_md5($str, $key = 'ThinkUCenter'){

return '' === $str ? '' : md5(sha1($str) . $key);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值