前端逻辑部分
- 扫描二维码:用户用手机扫描二维码后,手机上的扫码应用(如微信、支付宝或其他专门的扫码工具)会读取二维码中的信息。这些信息通常是一些文本内容,可能包含令牌、用户 ID 或其他标识信息。
- 解析与处理:扫码应用可能会对读取到的信息进行初步解析,然后将其传递给一个预先设置好的页面或应用内的逻辑处理部分。如果是在一个特定的应用内(如微信小程序、企业内部应用等),会按照应用的逻辑进行下一步操作;如果是在浏览器中,可能会通过 JavaScript 来处理这些信息。
- 跳转指令:在前端页面中,当扫码应用将二维码信息传递给页面的 JavaScript 代码后,JavaScript 会根据获取到的信息(如令牌)进行处理。通过
window.location.href
或者调用后端接口验证后再跳转的方式,决定跳转到哪个页面。例如,在前面的代码示例中,扫描二维码后,前端代码会将二维码中的令牌信息发送到后端验证,验证成功后根据后端返回的跳转 URL 进行页面跳转。
后端逻辑部分
- 接收与验证:前端将二维码信息(如令牌)发送到后端的指定接口(例如
ValidateQRToken
方法)。后端接收到信息后,会进行验证操作,例如通过调用业务逻辑层的方法来验证令牌的有效性,获取用户 ID 等信息。 - 用户信息处理:后端会根据获取到的用户 ID 等信息查询数据库,确认用户是否存在以及用户的相关权限等。如果用户存在且权限符合要求,后端会将用户信息存入会话(Session)中,用于后续页面的验证和操作。
- 返回跳转信息:后端验证通过后,会返回一个包含成功标志和跳转 URL 的响应给前端。前端接收到响应后,根据响应中的跳转 URL 进行页面跳转,从而实现用户扫描二维码后成功跳转到相应页面。
总结
- 用户扫码:用户在登录页面点击二维码登录,跳转到二维码界面,扫描另一个系统的二维码。
- 获取令牌和用户 ID:另一个系统处理扫码后,调用你系统的
QRCodeLogin
接口,传递code
、token
和idToken
。 - 验证用户:
- 调用外部系统 API 验证令牌有效性。
- 获取用户 ID 后,在已有数据库中查找用户。
- 复用登录逻辑:
- 如果用户存在,复用现有登录逻辑更新用户信息并设置 Session。
- 返回成功响应和跳转 URL。
- 前端跳转:前端根据返回的 URL 跳转到用户主页。