phpcms v9 如何实现用户登录

因为有时候我们需要自己实现用户登录,比如我们用phpcms做一个微信Oauth2.0授权,授权之后直接登录,这过程中不需要用户输入账户和密码。所以我们就要搞清楚,phpcmsv9它是怎么实现用户登录的。换名话说,phpcms的php代码在什么情况下会认定这个用户已经登录了。

首先,我们肯定要去看phpcms它原生的登录程序是怎么写的,然后我们要去看它是怎么判断这个用户已经登录了。

登录程序是怎么写的?


这个程序做了什么呢?

1. 它从system.php这个配置文件里面读出了auth_key这个配置,把它和用户的http_user_agent拼接之后计算出一个md5值,再把这个md5值作为下一步生成令牌的密钥。

2. 把用户的userid和密码的hash值用\t连接作为明文,用上一步得到的密钥进行加密,得到一个令牌。

3. 把这个令牌写入用户的cookie(当然这个令牌真正写入cookie的时候又进行了一次加密, 不过对使用param::get_cookie/param::set_cookie来操作cookie来说,它是透明的。)

4. 将一些常用信息写入cookie(不能起到验证的作用,真正起验证作用的是第二步计算出来的令牌)

写入成功后会得到如下的cookie


他是如何验证用户已经登录的?


这个程序又做了什么呢?

1. 他读取了cookie中写入的令牌。

2. 他用同样的方式计算出了加密的密钥

3. 用这个密钥去解密这个令牌,得到令牌中记录的userid以及密码的hash值。

4. 去数据库中找到这个userid对应的整条记录

5. 比对password

所以如果我们如何做phpcms的登录呢?

以微信为例,

1. 我们可以通过微信的Oauth2.0接口取得用户的openid, 去数据库里面找到对应的用户的信息。

2. 取出其中的userid和password。

3. 计算密钥以及生成令牌

4. 将令牌写入用户cookie

这样我们就可以实现一个Oauth2.0的登录方式。
转载请注明出处:  http://www.zeroplace.cn/article.asp?id=917&utm_source=tuicool  谢谢合作

 

转载于:https://www.cnblogs.com/qhorse/p/4642328.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值