首页 > 其他分享 >技术汇总:第十六章:关于登录与退出的token

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

时间:2023-01-05 17:44:52浏览次数:60  
标签:第十六章 登录 汇总 用户 校验 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,假如是同一个设备又没有过期的情况下可以反复使用

 

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120534938

标签:第十六章,登录,汇总,用户,校验,token,服务器,设备
From: https://www.cnblogs.com/wangchuanxinshi/p/17028398.html

相关文章

  • canvas 源码汇总
    Source/core/html/canvasContainscanvas-relatedsupportclasses,including:thebaseclassforallCanvasRenderingContextthebaseclassforallelementsthat......
  • LC 二叉搜索树-汇总
    二叉搜索树二叉搜索树又称二叉排序树,具有以下性质:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根......
  • jupyter问题汇总
    1.如何查看jupyter当前的路径?importosprint(os.path.abspath('.'))2.假设要安装 numpy 库,则在原来的语句上添加 -i 和镜像地址即可。pipinstall numpy -ihttp......
  • 技术汇总:第十七章:支付宝对接公钥,私钥
    支付宝对接公钥,私钥:https://docs.open.alipay.com/291/106103/截图这里的是公钥。密钥是您自己生成上传的,生成的是应用私钥和应用公钥。应用公钥上传到开放平台截图位置,......
  • 生产环境下包含refresh_Token接口报错nginx配置
    一、问题现象使用nginx代理项目,生产环境下,包含refresh_Token的接口报错,开发环境下却正常。二、原因nginx默认request的header内容参数下划线时会自动忽略掉,需要添加以下......
  • 技术汇总:第十八章:枚举的简单使用
    结合上一章阅读:https://blog.csdn.net/java_wxid/article/details/99168098枚举代码:packagecom.javaliao.backstage;importlombok.Getter;publicenumMyData{......
  • Python开发一个csv比较功能相关知识点汇总及demo
    Python2.7csv.reader(csvfile, dialect='excel', **fmtparams)的一个坑:csvfile被csv.reader生成的iterator,在遍历每二次时,内容为空iteratorAnobjectrepresentingastr......
  • linux的自动化操作相关使用方法汇总 专题
     Crontab中的除号(slash)到底怎么用?crontab是Linux中配置定时任务的工具,在各种配置中,我们经常会看到除号(Slash)的使用,那么这个除号到底标示什么意思,使用中有哪些需要注意的地......
  • IntelliJ IDEA常见问题解决办法汇总
     mac上idea升级到2020.2.2后,发现versioncontrol中的localchanges不见了!解决办法:View—>ToolWIndows—>Commit【点击下,就会提示要把这个Commit放在IDEA面板那个位置,选择......
  • 时序数据库 TDengine 3.0 参数体系使用方式汇总
    在日常使用 TDengine 时,参数是用户们无法绕开的重要一环。深入了解参数的属性,生效范围,查询更改方式等会让我们在使用数据库的过程中更加节时高效,也有助于我们更加深入地......