java实现手机扫码登录客户端

java实现手机扫码登录客户端在了解扫码登录之前我们先了解一下其他内容 首先为了安全 手机端它是不会存储你的登录密码的 但是在日常使用过程中 我们应该会注意到 只有在你的应用下载下来后 第一次登录的时候 才需要进行一个账号密码的登录 那之后呢即使这个应用进程被杀掉 或者手机重启 都是不需要再次输入账号密码的 它可以自动登录 其实这背后就是一套基于 token 的认证机制 我们来看一下这套机制是怎么运行的 1 账号密码登录时 客户端会将设备信息一起传递给服务端 2 如果账号密码校验通过 服务端会把账号与设备进行一个绑

为什么手机登录记住密码后不用再次登录

        在了解扫码登录之前我们先了解一下其他内容, 首先为了安全,手机端它是不会存储你的登录密码的。但是在日常使用过程中,我们应该会注意到,只有在你的应用下载下来后,第一次登录的时候,才需要进行一个账号密码的登录, 那之后呢 即使这个应用进程被杀掉,或者手机重启,都是不需要再次输入账号密码的,它可以自动登录。

  其实这背后就是一套基于token的认证机制,我们来看一下这套机制是怎么运行的,

java实现手机扫码登录客户端

 

1、账号密码登录时,客户端会将设备信息一起传递给服务端

2、如果账号密码校验通过,服务端会把账号与设备进行一个绑定,存在一个数据结构里

  然后服务端会生成一个token,用它来映射数据结构,这个token其实就是一串有着特殊意义的字符串,它的意义就在于,通过它可以找到对应的账号与设备信息,

1、客户端得到这个token后,需要进行一个本地保存,每次访问系统API都携带上token与设备信息。

2、服务端就可以通过token找到与它绑定的账号与设备信息,然后把绑定的设备信息与客户端每次传来的设备信息进行比较, 如果相同,那么校验通过,返回AP接口响应数据, 如果不同,那就是校验不通过拒绝访问

  从前面这个流程,我们可以看到,客户端不会也没必要保存你的密码,相反,它是保存了token。可能有些同学会想,这个token这么重要,万一被别人知道了怎么办。实际上,知道了也没有影响, 因为设备信息是唯一的,只要你的设备信息别人不知道, 别人拿其他设备来访问,验证也是不通过的。

  可以说,客户端登录的目的,就是获得属于自己的token。

  那么在扫码登录过程中,PC端是怎么获得属于自己的token呢?不可能手机端直接把自己的token给PC端用!token只能属于某个客户端私有,其他人或者是其他客户端是用不了的。

二维码登录本质上也是一种登录认证方式。既然是登录认证,要做的也就两件事情!

1、告诉系统我是谁

2、向系统证明我是谁

  比如账号密码登录,账号就是告诉系统我是谁, 密码就是向系统证明我是谁;比如手机验证码登录,手机号就是告诉系统我是谁,验证码就是向系统证明我是谁。

大致流程

1、手机登录

扫描前,手机端应该是已登录状态

手机输入个人账号密码登录后,服务器存着用户的身份信息,然后服务器返回给手机端用户的身份信息,登录之后手机端相当于拿到了身份的识别标志

2、PC端二维码的获取

PC端向服务端发起请求,告诉服务端,我要生成用户登录的二维码,把PC端设备信息也传递给服务端,因为每台电脑都有这个网页,所以需要绑定一下PC端的设备信息

服务端收到请求后,它生成二维码ID,并将二维码ID与PC端设备信息进行绑定(两者组合就是个身份识别标记),然后把二维码ID与PC端设备绑定信息和用户跳转地址返回给PC端,PC端收到上面三者信息后,生成二维码(二维码中肯定包含了ID)

3、

为了及时知道二维码的状态,客户端在展现二维码后,PC端的js定时器带着二维码ID和跳转地址url不断的发送ajax请求轮询服务端,比如每隔一秒就轮询一次,请求服务端告诉当前二维码的状态及相关信息,查看是未登录,还是正在登录,还是已经登陆,

java实现手机扫码登录客户端

4、手机扫码

用户用手机去扫描PC端的二维码,通过二维码内容取到其中的二维码ID与PC端设备绑定信息和跳转地址url,

再调用服务端接口将手机端的身份信息与电脑端二维码ID和跳转的url一起发送给服务端,

服务端接收到后,它可以将身份信息与二维码ID进行绑定,生成临时token,然后返回给手机端,也就是确认登录页面

因为PC端一直在轮询二维码状态,所以这时候二维码状态发生了改变,它就可以在界面上把二维码状态更新为已扫描

java实现手机扫码登录客户端

 5、状态确认

手机端在接收到临时token后会弹出确认登录界面,用户点击确认时,手机端携带临时token(用户身份信息与二维码ID绑定)用来调用服务端的接口,告诉服务端,我已经确认

服务端收到确认后,根据二维码ID绑定的设备信息与账号信息,生成用户PC端登录的token

这时候PC端的轮询接口,它就可以得知二维码的状态已经变成了”已确认”,并且从服务端可以获取到用户登录的token,并且去数据库取用户的信息

PC端轮询接口,确认已经登录,然后可以跳转页面同时显示用户信息

java实现手机扫码登录客户端

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211845.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:27
下一篇 2026年3月18日 下午9:28


相关推荐

  • java创建List时候 初始化赋值

    java创建List时候 初始化赋值在这之前可能有的读者 只知道数组初始化时候的赋值 String strings newString one two three 当创建 list 时候 也许你还会写过以下代码正确的写法 List lt String gt list newArrayList lt gt 这个大括号就

    2026年3月18日
    2
  • c++迭代器iterator遍历map_iterator迭代器原理

    c++迭代器iterator遍历map_iterator迭代器原理什么是迭代器迭代器是一种可以遍历容器元素的数据类型。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。C++更趋向于使用迭代器而不是数组下标操作,因为标准库为每一种标准容器(如vector、map和list等)定义了一种迭代器类型,而只有少数容器(如vector)支持数组下标操作访问容器元素。可以通过迭代器指向你想访问容器的元素地址,通过*x打印出元素值。这和我们所熟知的指针极其类似。C语言有指针,指针用起来十分灵活高效。C++语言有迭代器,迭代器相对于指针而言功能更为丰富。vector,是数

    2025年7月1日
    6
  • OpenClaw(“养龙虾”)保姆级教程:从零部署到生产级优化的完整指南

    OpenClaw(“养龙虾”)保姆级教程:从零部署到生产级优化的完整指南

    2026年3月13日
    3
  • springcloud使用LCN分布式事务

    springcloud使用LCN分布式事务此文为装载 前面根据自己参考的资料搭建时遇到问题先说明一下 1 tx manager 是个什么东西 它是独立的服务 要想实现分布式事务 要把它注册到 Eureka 与其他服务一样配置 2 到底下载哪个 tx manager 大部分文章给了下面这个地址 是图 2 这个东西吗 我下载的并不是这个 3 gradle 依赖问题 我用的是 gradle 开始依赖的 jar 没有排除日志依赖 导致日志冲突 无法启动

    2026年3月19日
    2
  • qq wine linux_wine qq

    qq wine linux_wine qq次博客为转载,原作者地址点击此处,解决ubuntu笔记本安装qq百度网盘微信等软件的问题 <divid="secondary"role="complementary"style="position:relative;"> <headerid="header"role="banner"> <div

    2025年9月17日
    8
  • 操作系统 面试问题_程序员面试问题大全及答案大全

    操作系统 面试问题_程序员面试问题大全及答案大全操作系统的组成1、驱动程序是最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。2、内核是操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。3、支承库是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNUC运行期库就属于此类…

    2022年8月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号