技术汇总:第十六章:关于登录与退出的token

简介: 技术汇总:第十六章:关于登录与退出的token

当两个设备都操作登录时,后操作的设备将具备登录权限,而之前登录的设备失去登录权限。

通常的登录业务,按照 token 随机生成的话,不同设备拥有不同的 token ,根据 token 来作为 key 保存登录数据,是可以同时登录同一个帐号,并且都保持在线的。因为这些 token 里面如果存登录状态的话,都会是已登录模式。

既然有这个唯一设备登录的需求,那就单独设置一个 user_login 的规则好了,比如 @caola 提供的方案, token 记录会话数据, userid 记录最后登录的 token ,这样只要有新请求过来,拿它的 token 以及 userid 里面存的 token 比较,不一致,就说明此登录已失效。

将用户输入的 账号和密码 提交给服务器;

服务器对其进行校验,若账号和密码对得上则校验通过,说明登录成功,并生成一个token值,将其保存在数据库,同时也返回给客户端;

客户端拿到返回的token值后,可将其保存在本地,作为公共参数,即以后每次请求服务器时都携带该token,提交给服务器,让服务器校验。

服务器接收到请求后,会取出请求头里的token值与数据库存储的token进行对比校验。若两个token值相同,则说明用户登录成功过,且当前正处于登录状态,此时正常返回数据,让APP显示数据。若两个值不一致,则说明原来的的登录已经失效,此时返回错误状态码,提示用户跳转至登录界面重新登录。用户每进行一次登录,登录成功后服务器都会更新个token新值返回给客户端。

个人观点:

我想用 { token: userId } 的形式将登录后产生的 token 保存在 redis 中,当用户使用 token 登录时就根据 token 来找出对应的 id ,但是这样在用户重新登录(比如换个设备,之前没退出)时,清除之前保存的 token。

token找到userId,换设备登录的时候清除之前的token或者重新利用,观点仅供参考:

1、你的情况可能是token存在了本地,不想暴露任何用户信息,包括id,所以你生成的token作为key中肯定不包含任何的用户信息,目的就是为了通过token找到id,然后再查询出用户信息,像这种情况我目前也只是想到通过redis本身的有效期来清除这些,token的作用可以理解为一个session

2、另外一种情况,我自己就会通过本地存储的token+device_token(设备号)通过各种加密方式产生一个key,假如是同一个设备又没有过期的情况下可以反复使用

前后端分离

首次登录时,后端服务器判断用户账号密码正确之后,根据用户id、用户名、定义好的秘钥、过期时间生成 token ,返回给前端;

前端拿到后端返回的 token ,存储在 localStroage 和 Vuex 里;

前端每次路由跳转,判断 localStroage 有无 token ,没有则跳转到登录页,有则请求获取用户信息,改变登录状态;

每次请求接口,在 Axios 请求头里携带 token;

后端接口判断请求头有无 token,没有或者 token 过期,返回401;

前端得到 401 状态码,重定向到登录页面。

相关文章
|
2天前
|
机器人 API
钉钉里{"code: 400, 错误描述:机器人权限校验不通过;解决方案:请登陆开放平台后台,检查机器人是否归属于token对应的主应用名下 请问场景机器人-发消息-这个报错什么原因导致的啊?
钉钉里{"code: 400, 错误描述:机器人权限校验不通过;解决方案:请登陆开放平台后台,检查机器人是否归属于token对应的主应用名下 请问场景机器人-发消息-这个报错什么原因导致的啊?
157 0
|
小程序 数据安全/隐私保护 开发者
【已解决】开发者扫码登录提示“需要验证小程序密码”
开发者扫码登录提示“需要验证小程序密码”
490 0
【已解决】开发者扫码登录提示“需要验证小程序密码”
|
2天前
|
前端开发
uniapp 实现退出登录 清除Token
uniapp 实现退出登录 清除Token
60 0
|
2天前
|
SQL 数据安全/隐私保护
带token的多用户登录(注册直接粗暴解决)
带token的多用户登录(注册直接粗暴解决)
带token的多用户登录(注册直接粗暴解决)
|
5月前
|
存储 小程序 关系型数据库
后台交互-个人中心->小程序登录微信登录接口演示,小程序授权登录理论,小程序授权登录代码演示,微信表情包存储问题
后台交互-个人中心->小程序登录微信登录接口演示,小程序授权登录理论,小程序授权登录代码演示,微信表情包存储问题
62 0
|
9月前
|
安全 Java 数据库
SecurityOauth2密码模式/oauth/token探究
SecurityOauth2密码模式/oauth/token探究
259 0
|
9月前
|
数据采集 Serverless 数据安全/隐私保护
如何解决爬虫程序中登录时遇到的动态Token问题
如何解决爬虫程序中登录时遇到的动态Token问题
|
存储 JSON NoSQL
实战!退出登录时如何借助外力使JWT令牌失效?
实战!退出登录时如何借助外力使JWT令牌失效?
|
存储 NoSQL Java
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
133 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   下
|
存储 缓存 NoSQL
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
109 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   上