web构建在http之上,而它又是无状态协议,如何控制用户访问服务器上的受限资源呢?
- 最原始你想法通过http基本认证,每次发请求时都向后台传递用户名密码信息,服务器每次收到请求后都先验证用户是否合法,不安全,效率低。
- 基于session认证,过去大多数系统采用,用户初次认证后会在服务端生成一个session对象,然后把sessionid保存在客户端中,浏览器下次再发请求时带上sessionid服务器就可以知道之前的会话信息。实现了http的状态保存。
- 基于token,很多中大型互联网系统在用,用户初次用用户名密码登陆成功后,服务端生成一个token,比如按照json web token规则保存在客户端,后面客户端再请求时携带token,服务端验证合法后返回受限资源。这种方式服务端不保存token任何信息,相当于把session信息全存在了客户端,客户端每次请求时都携带这些信息。因此服务端是无状态的,方面扩展。