微信小程序扫码登录的实现(微信小程序实现扫码功能)

createh52周前 (05-08)技术教程13

上海天正信息科技有限公司

Topcheer-AM数智运管平台-提供IT运维产品与服务

二维码扫描登录是一种便捷的登录方式,用户通过使用移动设备扫描电脑端显示的二维码,即可快速登录系统,无需手动输入用户名和密码。该方案主要涉及用户端(移动设备)、服务器端和电脑端三个部分。在介绍扫码登录的原理之前,我们先聊一聊服务端的身份认证机制。服务端收到用户的登录请求后,首先验证账号、密码的合法性。如果验证通过,那么服务端会为用户分配一个 token,该 token 与用户的身份信息相关联,可作为用户的登录凭证。之后 PC 端再次发送请求时,需要在请求的 Header中携带 token,服务端根据 token 便可识别出当前用户。token 的优点是更加方便、安全,它降低了账号密码被劫持的风险,而且用户不需要重复地输入账号和密码。

Token的验证方式如下:



微信小程序的扫码流程如下:

  1. 1、 服务器生成小程序二维码,二维码里面夹带一个scene,scene可以由服务器生成,保持唯一就行,后续登录状态都是靠这个来维持的,所以最好存入到redis当中,并且设置一定的过期时间。服务器可以调用微信的API,生成小程序的二维码。小程序的调用建议用weixin-java-miniapp第三方包,已经封装了常用的微信API,如果自己写的话也可以,底层都是通过HTTP调用。(scene在小程序的开发版是获取不到的,所以至少设置成体验版才行)
  2. 2、 通过小程序扫码之后,小程序前端需要将code和scene传回给服务器。服务端通过code获取到openId,这时候我们就可以先通过openId去判断判断该用户是否在服务端由保存,如果有的话,那么就可以自动登录了,然后我们把scene的状态置为登录状态。如果数据中找不到openId的话,那么就可以直接在小程序上进行登录。登录成功之后改变scene的状态。
  3. 3、 PC端不间断的向服务器请求scene的状态,如果一直是未登录状态,那么就可以继续请求。服务器如果判断scene已经登录过了,那么就返回已经登录的状态给前端,同时把token也一起返回。
  4. 4、 PC拿到token之后,直接进入到系统当中,后续就和传统的操作一样了。

相关文章

JWT在Java项目中的认证实践:从零开始打造安全高效的登录系统

JWT在Java项目中的认证实践:从零开始打造安全高效的登录系统在现代互联网开发中,安全认证是构建可靠系统的基石。而JSON Web Token(JWT)作为一种轻量级的认证机制,因其高效便捷的特点被...

OAuth2协议在实际项目中的应用:为你的应用添加“社交登录”功能

OAuth2协议在实际项目中的应用:为你的应用添加“社交登录”功能OAuth2协议在现代Web开发中扮演着至关重要的角色,它就像一把钥匙,帮你打开安全授权的大门。今天,我们就来聊聊OAuth2协议在实...

Java 自定义注解在登录验证的应用

java注解从 JDK 5开始,Java 增加了注解的新功能,注解其实是代码里面的特殊标记,这些标记可以在编译、类加载和运行时被读取,在不改变代码原有逻辑下,给源文件嵌入注解信息。再通过返回获取注解信...

Java,SpringSecurity,支持多个端认证和授权

背景和需求:一个SpringBoot项目,认证授权采用:SpringSecurity+Token(JWT)支持Web端,现需要同时并行的支持其它端的认证授权。SpringSecuritySpringS...

学习笔记-CAS实现单点登录(单点登录 cas oauth2)

CAS企业单点登录-v5.3.x单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS框架:CAS(Central...

SpringBoot + JWT 打造无状态登录系统,让你的应用更安全高效

还在为Session共享烦恼?每次集群部署都要头疼用户状态同步?传统Cookie+Session模式在分布式场景下越来越力不从心?本文将手把手带你用SpringBoot+JWT实现无状态登录,轻松解决...