Ruoyi-vue前后端不分离集成微信小程序授权登录思路

简介: Ruoyi-vue前后端不分离集成微信小程序授权登录思路

背景

公司需要开发一个小程序,后台使用的是ruoyi-vue框架,前端使用uiapp开发。小程序登录采用手机号验证码登录。

思路

1、重新改写登录逻辑

ruoyi-vue采用的是spring security权限框架,默认使用用户名和密码进行登录,所以如果要改成手机号验证码登录,则需要重写改造权限框架

2、创建表用来绑定微信用户唯一标识openId和手机号

新建一张表,主要放用户的openId和userId,用来绑定用户信息

流程

1、登陆,未授权

用户输入手机号,发送验证码进行登录,后台根据手机号去数据库中查询,判断手机号是否绑定openId,如果没有,则页面弹窗 允许授权的提示。

后台在返回token的同时,也会返回一个没有绑定openId的标志,用于给前台判断是否要弹出授权页面。

注意:调用发送验证码接口时,后台先判断,该手机号是否在系统表中,如果不在,则直接返回手机号不在平台内,防止填错或恶意填写

2、登陆,已授权

用户进入小程序登录界面,输入手机号进行登录,后台根据手机号去数据库中查询,判断手机号是否绑定openId,如果已绑定,则页面不再弹窗 允许授权的提示。

后台返回token,以及已经绑定了openId的标志

3、授权操作,绑定手机号和openId(前台传参 code 和 手机号)

前台点击允许授权,前台传入code和手机号到后台,

后台根据code,调用微信官方接口,获得openId,然后将openId与手机号绑定入库,最后则授权成功

如果用户不点击 允许授权, 那么下一次再来登录的时候,继续提示他,因为手机号和openId没有绑定。

4、微信一键登陆

用户可以选择手机号验证码进行登录,也可以使用一键登录。

点击一键登录,前台传递code到后台,后台根据code,调用微信接口,获得openId,

后台根据openId,查询数据库,如果未查询到数据,

方案一:则直接提示该手机号非平台用户

方案二:调用微信接口,获取用户绑定微信的手机号,然后用手机号去数据库查询,如果查询不到,则说明非平台用户,

如果可以查到,则使用手机号进行登录,登录成功返回token给前端,并且将openId存入数据库。

如果可以查询到,则说明用户之前登陆过平台并进行了授权,接下来通过查询到的手机号,在平台直接进行登录,

登录成功,返回token和已绑定了openId的标志给前台。


相关文章
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
4065 12
|
小程序 前端开发 算法
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
476 0
|
JavaScript Linux API
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
454 0
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
624 0
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
1717 6
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
1294 4
|
消息中间件 Java Kafka
Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成