前后端分离模式下,如何跟踪用户状态?

版权声明:本文为博主原创文章,可以转载,但请添加原文链接。 https://blog.csdn.net/hwhsong/article/details/82020526

在前后端分离开发模式下,前端采用Vue等MVVM框架,后端负责提供RESTful风格的接口。区别于传统开发模式下使用session来跟踪用户登录状态,前后端分离模式可采用读取cookie的方式来验证用户登录,每次用户访问任意URL,都会对cookie进行验证。
这种方式的好处是保证服务器处理任意的URL都是无状态的,可以扩展到多台服务器。
由于登录成功后是由服务器生成一个cookie发送给浏览器,所以,要保证这个cookie不会被客户端伪造出来。实现防伪造cookie的关键是通过一个单向加密算法,如SHA1。
举例如下:
当用户输入了正确的口令登录成功后,服务器可以从数据库取到用户的id,并按照如下方式计算出一个字符串:

"用户id" + "过期时间" + SHA1("用户id" + "用户口令" + "过期时间" + "SecretKey")

当浏览器发送cookie到服务器端后,服务器可以拿到的信息包括:用户id、过期时间、SHA1值。
如果未到过期时间,服务器就根据用户id查找用户口令,并计算:SHA1("用户id" + "用户口令" + "过期时间" + "SecretKey"),并与浏览器cookie中的哈希进行比较,如果相等,则说明用户已登录,否则,cookie就是伪造的。
这个算法的关键在于SHA1是一种单向算法,即可以通过原始字符串计算出SHA1结果,但无法通过SHA1结果反推出原始字符串。

猜你喜欢

转载自blog.csdn.net/hwhsong/article/details/82020526
今日推荐