当前位置: 首页 > news >正文

若依框架(前后端分离)增加手机号验证码登录

这篇文章主要介绍了如何在若依架(前后端分离)版本中集成短信验证码登录功能。文章内容包括了前后端的详细实现步骤,并通过代码示例展示了如何生成验证码、验证验证码、验证码登录、自定义的认证处理等功能的实现。

前端部分:

  • 登录界面改造:在现有的登录界面上增加短信验证码登录选项。用户可以选择使用短信验证码进行登录,前端表单将收集用户的手机号码和验证码信息。
  • 与后端接口的交互:实现前端与后端的交互逻辑,包括请求生成验证码、发送验证码到用户手机、提交验证码进行验证。前端通过调用后端API来完成这些操作,并根据后端的响应结果处理登录流程和用户反馈,确保用户体验的流畅性与安全性。

一、增加短信登录和发送短信验证码方法

        在src/api/login.js新增短信登录、发送短信验证码

// 短信登录方法
export function smsLogin(mobile,smsCode,uuid) {const data = {mobile,smsCode,uuid}return request({url: '/sms/login',method: 'post',data: data})
}// 发送短信验证码
export function getSmsCode(mobile) {const data = {mobile}return request({url: '/sms/code',method: 'post',data:data})
}

二、增加短信登录方法 

        在src/store/modules/user.js新增短信登录方法

    // 短信登录SmsLogin({ commit }, userInfo) {const mobile = userInfo.mobile.trim()const smsCode = userInfo.smsCodeconst uuid = userInfo.uuidreturn new Promise((resolve, reject) => {smsLogin( mobile, smsCode, uuid).then(res => {setToken(res.token)commit('SET_TOKEN', res.token)resolve()}).catch(error => {reject(error)})})}

注意有没有引入对应类!!!

注意有没有引入对应类!!!

注意有没有引入对应类!!!

import { login, logout, getInfo, smsLogin } from '@/api/login'

三、增加发送短信验证码和短信登录逻辑 

        在src/views/login.vue修改登录页面,增加发送短信验证码和短信登录代码

<template><div class="login"><el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"><h3 class="title">若依后台管理系统</h3><el-form-item prop="username" v-if="!isSmsLogin"><el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号"><svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /></el-input></el-form-item><el-form-item prop="password" v-if="!isSmsLogin"><el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin"><svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /></el-input></el-form-item><el-form-item prop="code" v-if="!isSmsLogin"><el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin"><svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /></el-input><div class="login-code"><img :src="codeUrl" @click="getCode" class="login-code-img"/></div></el-form-item><el-form-item prop="mobile" v-if="isSmsLogin"><el-input v-model="loginForm.mobile" type="text" auto-complete="off" placeholder="手机号"><svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /></el-input></el-form-item><el-form-item prop="smsCode" v-if="isSmsLogin"><el-input v-model="loginForm.smsCode" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin"><svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /></el-input><div class="login-code"><el-button round @click.native.prevent="getSmsCode">{{computeTime>0 ? `(${computeTime}s)已发送` : '获取验证码'}}</el-button></div></el-form-item><el-row><el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox><div class="sms-login"><el-buttonsize="mini"type="text"@click.native.prevent="loginMethod"><span v-if="isSmsLogin">账号密码登录</span><span v-else>短信验证登录</span></el-button></div></el-row><el-form-item style="width:100%;"><el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click.native.prevent="handleLogin"><span v-if="!loading">登 录</span><span v-else>登 录 中...</span></el-button><div style="float: right;" v-if="register"><router-link class="link-type" :to="'/register'">立即注册</router-link></div></el-form-item></el-form><!--  底部  --><div class="el-login-footer"><span>Copyright © 2018-2020 ruoyi.vip All Rights Reserved.</span></div></div></template><script>import {getCodeImg, getSmsCode,smsLogin} from "@/api/login";import { authBinding } from "@/api/system/auth";import Cookies from "js-cookie";import { encrypt, decrypt } from '@/utils/jsencrypt'export default {name: "Login",data() {return {codeUrl: "",cookiePassword: "",computeTime: 0,loginForm: {username: "",password: "",rememberMe: false,code: "",uuid: "",mobile: "",smsCode: ""},loginRules: {username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],password: [{ required: true, trigger: "blur", message: "请输入您的密码" }],mobile: [{ required: true, trigger: "blur", message: "手机号不能为空" }],code: [{ required: true, trigger: "change", message: "请输入验证码" }],},loading: false,// 验证码开关captchaEnabled: true,// 注册开关register: false,isSmsLogin: false,redirect: undefined};},watch: {$route: {handler: function(route) {this.redirect = route.query && route.query.redirect;},immediate: true}},created() {this.getCode();this.getCookie();},methods: {loginMethod(){this.isSmsLogin = !this.isSmsLogin;},getSmsCode(){if (!this.computeTime) {this.$refs.loginForm.validate(valid => {if (valid) {getSmsCode(this.loginForm.mobile).then(res =>{if(re

http://www.mrgr.cn/news/17197.html

相关文章:

  • 基于SSM+微信小程序的汽车预约维修管理系统(汽车3)(源码+sql脚本+视频导入教程+文档)
  • STM32F1+HAL库+FreeTOTS学习8——第一个任务,启动!
  • VCTP论文精读
  • 3.Redis高级特性和应用(慢查询、Pipeline、事务、Lua、限流原理)
  • MacOS用户必看:轻松升级Ruby版本,解锁开发新潜力!
  • Pandas 7-进行排序、多重排序
  • 【网络安全】CSRF漏洞—CSRF基础漏洞防御
  • 耶鲁大学《博弈论》公开课笔记
  • 莫比乌斯反演总结
  • 【JUC】08-中断机制之中断协商机制
  • UE5学习笔记19-服务器的更新频率,根骨骼旋转节点
  • 详解L5流程活动中的业务项(BI,Business Item)附埃森哲流程优化方法论PPT下载
  • 孩子自闭症的主要表现:探寻理解之门
  • 【安全科普】学完网络安全出去能做什么工作?
  • 【网络安全】ASP.NET网站中的文件上传RCE
  • Rust 中 `madvise` 和 `posix_fadvise`的区别
  • 一键解决LBP2900通信错误的问题(同样支持Win 11系统)
  • 编译可执行命令的FFmpeg
  • 黑马JavaWeb开发笔记12——IDEA集成Maven:配置Maven环境、Maven项目创建导入、依赖配置和管理、Maven生命周期
  • NeRF: Representing Scenes asNeural Radiance Fields for View Synthesis 论文解读