扫码登录详解

article/2025/9/17 14:47:57

目录

扫码流程分析

流程详解

步骤一:PC端准备二维码

步骤三:状态确认

token认证机制

扫码流程分析

        1.扫码前,手机端已经是登陆状态,PC端显示一个二维码,等待扫描。

        2.手机端打开应用,扫描PC端的二维码。

        3.扫描后,会提示“已扫描,请在手机端点击确认”

        4.用户在手机端点击确认,确认后PC端就登陆成功了。

 

流程详解

步骤一:PC端准备二维码

        从二维码的不同状态来看,首先是等待扫描状态,用户打开PC端,切换到二维码登陆界面时,

        1.PC端向服务端发起请求,告诉服务端,需要生成用户登陆的二维码,并且把PC端设备信息也传递给服务端。

        2.服务端收到请求后,生成二维码ID,并将二维码ID与PC端设备信息进行绑定。

        3.服务端将二维码ID返回给PC端

        4.PC端收到二维码ID后,生成二维码(二维码中包含了ID)

        5.为了知道二维码的状态,客户端在展现二维码后,PC端不断轮询服务端,请求服务端告知当前二维码的状态。
步骤二:扫码,二维码状态改变

        1.用户手机扫描PC端的二维码,通过二维码内容取到其中的二维码ID

        2.手机端调用服务端 API 将移动端的身份信息与二维码 ID 一起发送给服务端。

        3.服务端接收到后,将身份信息与二维码 ID 进行绑定,生成临时 token。

        4.将生成的临时token发送给手机端。

        5. PC 端一直在轮询二维码状态,所以这时候二维码状态发生了改变,它就可以在界面上把二维码状态更新为已扫描,页面提示“已扫描,请在手机端点击确认”

步骤三:状态确认

        1.手机端接收到临时token后会弹出确认登陆界面,用户点击确认时,手机携带临时token,告诉服务器,手机端已确认。

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

        3.这时候PC端的轮询接口就可以得知二维码的状态已经变成“已确认”,并且服务端可以获取到用户登陆的token

        4.登陆成功

token认证机制

为什么 要用token?

        1.HTTP是一个无状态的协议,一次请求结束后,下次在发送给服务器,服务器就不知道是谁发来的了(同一个ip不代表同一个用户),在web应用中,用的认证和鉴权是非常重要的一环。

        2.早期,大部分采用基于cookie-session的会话管理方式,但是基于session的方法又存在很多问题:

        a:服务器需要存储session,并且由于session需要快速的查找,通常存储在内存或者内存数据库中,同时在线用户较多时需要占用大量的服务器资源。

        b:当需要扩展时,创建session的服务器可能不是验证session的服务器,所以还需要将所有的session单独存储并共享。

        c:由于客户端使用cookie存储sessionID,在跨域场景下需要进行兼容处理,同时这种方式也难以防范CSRF攻击。

token是什么?

        token是服务器生成的一串字符串,作为客户端请求的一个令牌,等第一次登陆后,服务器生成一个token返回给客户端,以后客户端只需要带上这个token前来请求即可,不需要再次带上用户名和密码。提高了安全性。

token的具体逻辑:

        1.客户端使用用户名、密码进行认证。

        2.服务端验证用户名,密码正确后生成token返回给客户端。

        3.客户端保存token,访问需压认证的接口在url参数或者HTTP header中加入token。

        4.服务器通过解码进行token授权,返回给客户端需要的数据。

token的优势:

        1.服务器不需要存储和用户鉴权相关的信息,鉴权信息会被加密到token中,服务端只需要读取token包含的鉴权信息即可。

        2.避免了共享session导致的不易扩展的问题。

        3.不需要依赖cookie,有效的避免了cookie带来的CSRF攻击问题


http://chatgpt.dhexx.cn/article/th8AseSw.shtml

相关文章

新增商品

1、在http代理设置,添加过滤参数: .*pusher\.*\/websocket.* .*/venilog/log/one .*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff) .*pusher\/info.* 2、启动http代理设置,录制脚本,将登陆和发布商品的脚本修改成’登陆‘&#x…

自定义商品分类,选择分类之后,添加商品附属性;仿淘宝后台添加商品附属性的价格和数量

效果图&#xff08;图片较大&#xff0c;加载较慢&#xff09; 页面部分&#xff1a; <div class"layui-form-item" id"add_attribute"><label class"layui-form-label">商品分类</label><div class"layui-input-i…

javaScript原生版购物车:全选、单选、全删、商品数量增减、计算总价、添加商品(代码)

题目&#xff1a; CSS代码如下&#xff1a; <style> *{ margin: 0px; padding: 0px; } .header,.content,.floot{ width: 800px; margin:0px auto; } .header ul li,.content ul li{ float: left; list-style: none; width: 100px; line-height: 100px; text-align: cen…

商品管理的新增

实现的功能如下&#xff1a; 点击新增弹出新增模态框通过下拉框绑定商品类别和商品单位保存新增 主要代码&#xff1a; 以上就是我的分享&#xff0c;如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔&#xff01;

案例:实现在购物车中添加商品和删除购物车中指定商品的功能

一、向购物车中添加商品 1.1.创建AddCartServlet public class AddCartServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}SuppressWarnings(&q…

14.商品添加功能

商品用例的bean层 添加商品的用例实现首先要有封装商品的bean&#xff0c;还要有封装商品种类的bean。 封装商品种类的bean package cn.bingou.domain;/*** 商品种类的bean* author 吹静静**/ public class ProdCategory {private int id;private String cname;public ProdCate…

二十三、商城 - 商品录入-新增商品(11)

目录 &#x1f33b;&#x1f33b; 一、商品录入【选择商品分类】1.1 需求分析1.2 准备工作1.3 代码实现1.3.1 一级分类下拉选择框1.3.2 二级分类下拉选择框1.3.3 三级分类下拉选择框1.3.4 读取模板ID 二、商品录入【品牌选择】2.1 需求分析2.2 代码实现 三、商品录入【扩展属性…

java添加功能_商品添加功能的实现

返回的结果&#xff1a; package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; /** * 淘淘商城自定义响应结构 */ public class TaotaoResult { // 定义jackson对象…

把商品添加到购物车的方法

因为抢华为荣耀的缘故&#xff0c;研究了下京东添加商品到购物车的方法&#xff0c;具体步骤如下 一&#xff1a;打开商品页面&#xff0c;找到商品的id 例如这个商品的id就是1056970 二&#xff1a;把链接里面的http://gate.jd.com/InitCart.aspx?pid###&pcount1&pt…

php 商品模块添加商品属性,添加新商品

进入添加商品页后&#xff0c;如图1&#xff0c;2 添加新商品 图1 图2 促销价格前台表现 图3 图4 图5 附加价格前台表现 图6 添加新商品 图7 配件和关联商品前台表现形式 图8 图9 通用信息商品分类&#xff1a;商品分类是必填项&#xff0c;用于帮助客户找到需要的商品。如果您…

添加商品

添加商品 步骤分析: 1.在index.jsp添加一个超链接 跳转到add.jsp 2.add.jsp放入一个表单 3.表单提交到 AddProductServlet 封装数据 调用service完成保存操作 跳转到FindAllServlet (请求转发和重定向) 有表单使用的时候若使用请求转发会出现重复提交 方案1:重定向 …

十七、商品添加

&#xff08;1&#xff09;通过编程式导航跳转到商品添加页面 1. 在List.vue页面。点击添加商品&#xff0c;实现页面跳转 2. 创建商品添加组件Add.vue 3. 为Add组件添加路由 &#xff08;2&#xff09; 渲染添加页面的基本UI结构 使用到Alter警告和Steps 步骤条组件 1. 引入…

(三十)商品管理-添加商品(上传图片)

&#xff08;三十&#xff09;商品管理-添加商品(上传图片) 添加商品(上传图片)1.修改页面上添加连接/store/adminProduct?methodaddUI2.在addUI请求转发到 添加页面3.在表单页面上修改action : /store/addProductServlet提交方式: method"post"添加enctype属性: e…

【VUE项目实战】56、商品添加功能(六)-提交添加的商品

接上篇《55、商品添加功能&#xff08;五&#xff09;-商品内容模块》 上一篇我们完成了商品内容编辑模块的开发&#xff0c;也即是完成了商品所有的信息编辑&#xff0c;本篇我们就来开发提交商品所有信息到后台的功能。 一、要实现的效果 我们要实现点击“添加商品”的按钮…

淘淘商城第30讲——实现商品添加功能

经过上文的学习&#xff0c;我相信大家都应该知道了富文本编辑器的使用方法&#xff0c;我们能走到这步&#xff0c;实属不易&#xff0c;本文终于可以来实现商品添加这个功能了。 在item-add.jsp页面当中&#xff0c;当点击提交按钮后&#xff0c;会触发submitForm方法&#…

密码登录

利用idea实现密码的输入 首先我们要先新建一个页面用于输入账号密码 req.setCharacterEncoding("UTF-8");String LoginNamereq.getParameter("LoginName");String LoginPwdreq.getParameter("LoginPwd");String msg"请输入密码";priva…

SQL Server安全:登录和用户

SQL Server安全&#xff1a;登录和用户 前言 建议配合sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系一起看。 授予 Principal &#xff08;安全主体&#xff09;操作 Securable&#xff08;安全对象&#xff09; 的 Permission&#xff08;权限&…

springboot-security安全登录

一个简单的security安全登录示例 配置环境 添加pom依赖坐标 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version></parent><depe…

如何设计一个安全的登录接口?

Java技术栈 www.javastack.cn 关注阅读更多优质文章 作者&#xff1a;哒哒哒哒打代码链接&#xff1a;juejin.im/post/6859214952704999438 前言 大家学写程序时&#xff0c;第一行代码都是hello world。 但是当你开始学习WEB后台技术时&#xff0c;很多人的第一个功能就是写的…

[OS-Linux] CentOS 7.x 安全登录策略设置

简介 之前用用户名和密码登陆服务器 这样不安全 &#xff0c;用SSH公钥(public key)验证 这个办法能很好的解决 登陆服务器 和安全登陆服务器的特点&#xff1a; 方法 / 步骤 &#x1f510; 一: 证书生成 命令行页面生成 (推荐) 查看执行结果&#xff0c;这时候连续回车即可…