关于网站保存用户信息的讨论。

1.   现在貌似大多数网站用户认证都是基于 session 的,即在服务端生成用户相关的 session 数据,而发给客户端 sesssion_id 存放到 cookie 中,这样用客户端请求时带上 session_id 就可以验证服务器端是否存在 session 数据,以此完成用户认证。这种认证方式,可以更好的在服务端对会话进行控制,安全性比较高(session_id 随机),但是服务端需要存储 session 数据(如内存或数据库),这样无疑增加维护成本和减弱可扩展性(多台服务器)。

2.    基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用户验证后,服务端根据用户信息生成一个 token(hash 或 encrypt)发给客户端,客户端可以放到 cookie 或 localStorage 中,每次请求时在 Header 中带上 token ,服务端收到 token 通过验证后即可确认用户身份。这种方式相对 cookie 的认证方式就简单一些,服务端不用存储认证数据,易维护扩展性强,。不过这种方式在加密或解密的时候会有一些性能开销(md5加密)

user_name: gdtv
exxpired_time: xxx
rand_string: kfjherogelw34535
token: md5(user_name+salt+exxpired_time+rand_string)

读取到 user_name ,并且校验 token 通过,表示已登录

3.基于1,在用户登陆成功之后将,用户名和加密之后的密码一起保存在cookie中,用户之后登陆的校验使用sessionid,如果服务器中session过期,那么使用cookie中保存的用户名和加密的密码进行再一次登陆,又可以得到新的session。

猜你喜欢

转载自blog.csdn.net/u010365819/article/details/80884239
今日推荐