手机扫码登录实现原理「建议收藏」

扫码登录原理最近接到一个需求,要求我用手机扫码实现用户登录,这是近几年比较流行的登录方式。这样确实是实现用户体验至上,操作简单,方便实用。拿到需求之后,我与后端大哥商量后,敲定了具体的实施方案。其实重要的还是要弄懂他实现的原理。需求:用户至上的体验效果,手机扫码同步登录状态很多企业在开发自己app的同时会推出网页版,为了登录更方便、更安全。企业会选用手机扫一扫,实现用户登录。神奇的是。为什么…

大家好,又见面了,我是你们的朋友全栈君。

最近接到一个需求,要求用手机扫码实现用户登录,这是近几年比较流行的登录方式。这样确实是实现用户体验至上,操作简单,方便实用。拿到需求之后,我与后端大哥商量后,敲定了具体的实施方案。其实重要的还是要弄懂他实现的原理。

需求:用户至上的体验效果,手机扫码同步登录状态

很多企业在开发自己app的同时会推出网页版,为了登录操作更方便、更安全。企业会选用手机扫一扫,实现用户登录。神奇的是。为什么网页只显示一个二维码就可以实现用户登录?这个二维码是固定的吗?怎么给用户分配的id?怎么能把手机上的登录信息同步到网页上?
例如:淘宝、京东这些,如何做到扫一扫授权就能登录成功,并实现用户信息同步的。

在这里插入图片描述
下面我们介绍一下手机扫码登录的实现原理,用到的服务器要有2台,手机端服务器和网页端服务器不是同一台服务器。

网页端与服务器

用户打开一个网站的登录页面==>此时浏览器会向服务器发送一个请求,这个请求用来获取登录的二维码==>服务器收到请求后,随机生成一个uuid,并将这个uuid作为key值存储在redis中,同时设置一个过期时间,过期后,用户的界面就会显示“需要重新获取二维码”。同时也将这个key值与本公司的验证字符串绑定在一起,然后将这些生成一个随机的二维码(网上有很多二维码生成器的接口和源码,可以直接调用)==>将二维码和用户的uuid一起返回给浏览器。

前端开发获取到这个这个二维码和uuid==>每隔一秒向浏览器发送一次登录是否成功的请求,请求中携带有uuid作为当前页面的标识符。

这里有一个问题:服务器只存了一个随机的uuid在redis中,那么用户的id的信息怎么会显示出来。其实这个用户的id信息是由手机服务器存在redis中的。这也就为什么要俩台服务器的原因。

手机端与服务器

刚刚我们说了,浏览拿到二维码并且展示在页面上。这个时候前端可以给定一个提示信息。请用手机扫一扫登录。用户拿到手机扫描二维码,就可以得到一个验证信息和一个uuid(扫描二维码获取字符串的这个案例网上也能找到很多),由于手机端已经进行过登录操作,后端也记录了用户信息,所以在访问手机端服务器的时候,参数中已经携带用户的token,手机端服务器就可以解析用户的uesrid(注意:这里从token中取值而不是手机端直接传userid是为了安全,直接传userid可能会被截获和修改,token是加密的,被修改的风险会小很多)。手机端将解析到的数据和用户token一起作为参数,向服务器发送验证登录请求(这里的服务器是手机服务器,手机端的服务器跟网页端服务器不是同一台服务器)。服务器收到请求后,首先对比参数中的验证信息,确定是否为用户登录请求接口。如果是,返回一个确认信息给手机端。

手机端收到返回后,将登录确认框显示给用户(防止用户误操作,同时使登录更加人性化)。用户在手机上确认是进行的登录操作后,手机再次发送请求。服务器拿到uuId和userId后,将用户的userid作为value值存入redis中以uuid作为key的键值对中。

登录成功

然后,浏览器再次发送请求的时候,浏览器端的服务器就可以得到一个用户Id,并调用登录的方法,生成一个浏览器端的token,然后浏览器再次发送请求的时候,将用户信息返回给浏览器,登录成功。这里存储用户id而不是直接存储用户信息是因为,手机端的用户信息,不一定是和浏览器端的用户信息完全一致。

在这里插入图片描述
如果你是前端小可爱,那么只需发送请求,接收消息就可以。重要的逻辑部分和解析工作还是由后端大佬们挑大梁,希望可以帮助到大家。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • zookeeper的基本操作_奇门遁甲实战入门之五

    zookeeper的基本操作_奇门遁甲实战入门之五本原创入门教程,涵盖ZooKeeper核心内容,通过实例和大量图表,结合实战,帮助学习者理解和运用,任何问题欢迎留言。目录:zookeeper介绍与核心概念 安装和使用 ZooKeeper分布式锁实现 ZooKeeper框架Curator分布式锁实现及源代码分析 zookeeper开发实战(java客户端)本章是后续学习的基石,只有充分理解了分布式系统的概念和面临的问题,以及Z…

    2022年10月7日
    2
  • 风控模型基本概念和方法

    风控模型基本概念和方法每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~———————————————————————————本笔记源于CDA-DSC课程,由常国珍老师主讲。该训练营第一期为风控主题,培训内容十分紧凑,非常好,推荐:CDA数据科学家训练营———————…

    2022年4月29日
    61
  • python和java哪个值得学-Python和Java学哪个好?大家是怎么选的

    python和java哪个值得学-Python和Java学哪个好?大家是怎么选的Python和Java学哪个好?很多开始学习编程的同学就很难选择,过去几年选择Java无话可说,近年来大家都开始关注人工智能这一方向,都觉得人工智能是未来的趋势,选择Java就会和人工智能失之交臂,确实,但大家要知道,想从事人工智能方面的工作,学的可不只有Python,更需要你会各种复杂的计算,数据分析,推演,超强的思维等等。Java是一门成熟发展20多年编程语言,开发使用率极高,目前java市场…

    2022年7月7日
    21
  • python-louvain_louvin算法

    python-louvain_louvin算法本发明涉及数据挖掘技术领域,尤其涉及一种基于Louvain算法的社区发现方法及一种基于Louvain算法的社区发现系统背景技术:随着信息化技术的发展,信息系统中保存着大量用户的信息特征,用户与用户之间也存在着某种关联性。用户的特征具有多维度,且多关联性。社区发现能帮助人们更有效地了解网络的结构特征,从而提供更有效、更具个性化的服务。当前,许多研究通过分析网络的结构来发现社区。其中,Blondel等…

    2025年6月24日
    1
  • 计算机视觉-相机标定(Camera Calibration)

    计算机视觉-相机标定(Camera Calibration)1.相机标定基本原理1.1简介相机标定(Cameracalibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵PPP的过程基本的坐标系世界坐标系:用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。相机坐标系:在相机上建立的坐标系,为了从相机的角度描述物体位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。图像坐标系:为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标。一般来说,标定

    2022年5月28日
    136
  • MFC入门教程(深入浅出MFC)

    以下是我从其他网站中学的内容,后有相应的网站学习链接地址,可供学习1.选择菜单项File->New->Project,弹出“NewProject”对话框。 2.左侧面板中InstalledTemplated的VisualC++下选择MFC,中间窗口中选择MFCApplication,然后在下面的Name编辑框中键入工程名称,本例取名“Addition”,在Location编

    2022年4月18日
    265

发表回复

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

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