除了可以将用户信息通过Cookie存储在用户浏览器,也可以利用session存储在服务器端,存储在服务器端的信息更加安全。
session可以存储在服务器上的文件,数据库或者内存中。也可以将session存储在Redis这种内存型数据库中,效率会更高。
使用session维护用户登录状态的过程如下:
1.用户进行登录时,用户提交包含用户名和密码的表单,放入http请求报文中,
2.服务器验证该用户名和密码,如果正确则把用户信息存储到Redis中,它在Redis中的key成为session ID,
3.服务器返回的响应报文的set-cookie首部字段包含了这个session ID,客户端收到响应报文之后将该Cookie值存入浏览器中,
4.客户端之后对同一服务器进行请求事会包含该Cookie值,服务器收到之后提取出session ID,从Redis中取出用户信息,继续之前的业务操作。
简单点说就是:session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。