问:做网站时用户登录状态怎么保持?Session与Token有什么区别?
答:做网站时保持登录状态主流有两种方案——Session和Token。Session把登录信息存在服务器端,浏览器只保留一个凭证;Token则把加密后的用户信息直接发给浏览器保存,服务器不再存会话。两种方式都能实现"关掉网页再打开还是登录状态",区别在于状态存放在谁那边。

用户登录后,服务器创建会话记录,把Session ID写进浏览器Cookie。优点是服务器可以随时让某个会话失效,控制力强,适合会员系统、后台管理等对安全要求高的场景;缺点是服务器要维护会话存储,用户量大时占用内存,做小程序、APP等多端登录时还需要额外打通会话。
登录成功后服务器签发一个签名令牌(常见如JWT),浏览器存在本地并随每次请求携带。优点是服务器无状态、不用存会话,天然适合前后端分离和网站、APP、小程序多端共用一套接口;缺点是签发后短期内难以主动作废,需要配合短期有效期加刷新机制。
简单说,做网站时如果只有网页端,Session够用且省心;如果规划了多端登录或后续要扩展APP,一开始就按Token方案设计,能省去后期改造成本。