We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP是无状态的,什么叫无状态?意思是HTTP不会记住用户,即使你刚刚才使用账号密码登录过系统,下一次请求,还得再次校验你的身份。
常用做身份校验的方式有session和token,他们有各自的优缺点,可能有人质疑说还有cookie,cookie只是用来存储数据的载体。
认证流程:
session对象存储在服务器端,客户端登录以后,每次请求只需带上sessionid即可完成身份认证。但是,当服务器采用分布式或集群时,用户在服务器A登录,下次请求到了另一台服务器B,就得重新登录,这是无法接受的,解决方式有以下几种:
不管哪一种,都得付出额外的成本,并且,随着用户量增大,服务器将创建大量的session对象,对服务器来说是个负担。
和session认证不同的是,token认证机制不需要在服务器端存储任何东西,这一点来说,服务器压力不会随着用户量增加而增大。
cookie不是一种认证机制,它和localStorage以及sessionStorage才是同类,由于每次HTTP请求都会自动带上cookie,它常常被用来存储用户认证相关数据。也正是因为每次HTTP请求都会自动带上cookie,才有了CSRF问题,要解决CSRF也很简单,不要把用户认证信息存在cookie。
session像花名册,每次访问服务器都要查找该客户端是否登记在册; token像密文,每次访问服务器,服务端都要采用特定的算法校验token是否有效; 相对session来说,token是利用服务器CPU的计算时间来换取服务器存储session对象的空间。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
session、token和cookie
HTTP是无状态的,什么叫无状态?意思是HTTP不会记住用户,即使你刚刚才使用账号密码登录过系统,下一次请求,还得再次校验你的身份。
常用做身份校验的方式有session和token,他们有各自的优缺点,可能有人质疑说还有cookie,cookie只是用来存储数据的载体。
session认证机制
认证流程:
session对象存储在服务器端,客户端登录以后,每次请求只需带上sessionid即可完成身份认证。但是,当服务器采用分布式或集群时,用户在服务器A登录,下次请求到了另一台服务器B,就得重新登录,这是无法接受的,解决方式有以下几种:
不管哪一种,都得付出额外的成本,并且,随着用户量增大,服务器将创建大量的session对象,对服务器来说是个负担。
token认证机制
认证流程:
和session认证不同的是,token认证机制不需要在服务器端存储任何东西,这一点来说,服务器压力不会随着用户量增加而增大。
cookie
cookie不是一种认证机制,它和localStorage以及sessionStorage才是同类,由于每次HTTP请求都会自动带上cookie,它常常被用来存储用户认证相关数据。也正是因为每次HTTP请求都会自动带上cookie,才有了CSRF问题,要解决CSRF也很简单,不要把用户认证信息存在cookie。
总结
session像花名册,每次访问服务器都要查找该客户端是否登记在册;
token像密文,每次访问服务器,服务端都要采用特定的算法校验token是否有效;
相对session来说,token是利用服务器CPU的计算时间来换取服务器存储session对象的空间。
The text was updated successfully, but these errors were encountered: