token实现登录状态保持/身份认证的机制

实现登录状态保持与身份认证的方式通常有两种:session结合数据库、token。

两者相比较,token有较多优点。

① token可以存储在任何位置(比如cookie或local storage)

② token更容易跨域

③ token过期时可以通过刷新token,让用户一直保持有效登录

④ 如果api在不同终端上,token更方便安全

 

二、token原理

其过程大致如下:

① 用户首次登录,将输入的账号和密码提交给服务器

② 服务器对输入内容进行校验,若账号和密码匹配则验证通过,登录成功,并生成一个token值,将其保存到数据库,并返回给客户端

③ 客户端拿到返回的token值将其保存在本地(如cookie/local storage),作为公共参数,以后每次请求服务器时都携带该token(放在响应头里),提交给服务器进行校验

④ 服务器接收到请求后,首先验证是否携带token,若携带则取出请求头里的token值与数据库存储的token进行匹配校验,若token值相同则登录成功,且当前正处于登录状态,此时正常返回数据,让app显示数据;若不存在或两个值不一致,则说明原来的登录已经失效,此时返回错误状态码,提示用户跳转至登录界面重新登录

⑤ 注意:用户每进行一次登录,登录成功后服务器都会更新一个token新值返回给客户端

 

 

 

  • 39
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
状态身份验证机制和有状态身份验证机制在处理身份验证信息和维护用户状态方面存在一些区别。 无状态身份验证机制(如Token)在服务器端不存储用户的身份信息,而是将用户的身份信息存储在客户端(例如浏览器)中。每次请求时,客户端都会将身份信息(即Token)包含在请求中,服务器通过解析和验证Token来确定用户的身份。这意味着服务器不需要在内存或数据库中存储用户的身份信息,使得系统具有更好的可扩展性和灵活性。然而,由于服务器不存储用户状态,因此无法主动注销或管理用户的会话。 有状态身份验证机制(如Session)在服务器端存储用户的身份信息,并为每个用户分配一个唯一的会话标识符(Session ID)。每次请求时,客户端都会将Session ID包含在请求中,服务器通过查找相应的会话来确定用户的身份。服务器可以在会话中存储用户的状态和其他相关数据,因此可以更方便地管理用户会话、注销用户等操作。然而,由于服务器需要存储和管理会话状态,因此可能对服务器资源和性能造成一定的压力,并且在分布式系统中需要考虑会话共享或复制的问题。 综上所述,无状态身份验证机制更适合于分布式系统或需要扩展性和灵活性的场景,而有状态身份验证机制更适合于单一服务器系统或需要对用户会话进行主动管理的场景。选择哪种机制取决于具体的应用需求和系统设计考虑。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值