如何让浏览器记住登录状态 token cookie session
使用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
用户首次登录,输入账号密码,提交服务器。
服务器对输入内容进行校验,若校验通过,登录成功,并生成一个token值,将该值存入数据库,并返回给客户端。
客户端拿到返回的token,保存至本地(cookie/local storage),作为公共参数,以后每次请求服务器时都携带该token(放在响应头里),提交给服务器进行校验。
服务器接收请求后,验证是否携带token,若携带,则取出请求头中的token值与数据库存储的值进行匹配校验,若相同,则登录成功,返回数据,若数据库中不存在该值或者两者不一致,则说明原来登录已失效,返回错误码。
注:用户每进行一次登录,登录成功后,服务器都会更新一个token新值返回给客户端。
token的优点
token可以存储在任何位置(比如cookie)
token更容易跨域
token过期时可以通过刷新token,让用户一直保持有效登录
如果api在不同终端上,token更方便安全
共 0 条评论