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

createh52个月前 (05-08)技术教程25

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

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)作为一种轻量级的认证机制,因其高效便捷的特点被...

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

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

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

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

Java登录暗藏玄机!5年开发老鸟揭秘7大安全漏洞—附终极防御方案

“你的用户密码真的安全吗?80%的Java开发者都踩过这些坑!悟空问答特邀资深架构师,用外卖系统等生活案例,教你写出支付宝级别的登录系统!”一、灵魂拷问:记住我功能=记住危险?用户提问:“为什么我用C...

使用 Sa-Token 实现不同的登录:单地登录、多地登录、同端互斥登录

一、需求分析如果你经常使用腾讯QQ,就会发现它的登录有如下特点:它可以手机电脑同时在线,但是不能在两个手机上同时登录一个账号。同端互斥登录,指的就是:像腾讯QQ一样,在同一类型设备上只允许单地点登录,...