使用cookie保存

cookie是保存在客户端的,用户登录成功后,后台将加密后的用户信息发送到客户端浏览器,由客户端浏览器保存。

使用session保存

Session保存在服务器端,每个session都有一个唯一的session id 保存在cookie里,如果关闭浏览器再打开浏览器,cookie仍然记住了之前的session id,就可以自动登录。

cookie分类

  • 内存cookie(进程中的cookie)
    大部分的session机制都使用进程中cookie来保存session id,关闭浏览器后这个进程自动消失,因此cookie也随之消失,再次连接到服务器时,无法找到对应的session,也就无法实现自动登录。
  • 硬盘cookie
    硬盘中的cookie不会丢失session id,即使关闭浏览器后再打开,也仍能实现自动登录。比如“记住一周”,购物车信息可以在切换不同浏览器时依然可用,都是因为使用了硬盘cookie。

使用token

让网页保持登录状态 java 怎样保持网页登录状态_让网页保持登录状态 java

  1. 用户首次登录,输入账号密码,提交服务器。
  2. 服务器对输入内容进行校验,若校验通过,登录成功,并生成一个token值,将该值存入数据库,并返回给客户端。
  3. 客户端拿到返回的token,保存至本地(cookie/local storage),作为公共参数,以后每次请求服务器时都携带该token(放在响应头里),提交给服务器进行校验。
  4. 服务器接收请求后,验证是否携带token,若携带,则取出请求头中的token值与数据库存储的值进行匹配校验,若相同,则登录成功,返回数据,若数据库中不存在该值或者两者不一致,则说明原来登录已失效,返回错误码。
    注:用户每进行一次登录,登录成功后,服务器都会更新一个token新值返回给客户端。

token的优点

  1. token可以存储在任何位置(比如cookie)
  2. token更容易跨域
  3. token过期时可以通过刷新token,让用户一直保持有效登录
  4. 如果api在不同终端上,token更方便安全