【学生管理系统】权限管理
创始人
2024-04-03 20:52:14
0

# 7. 程序升级

## 7.1 登录升级

### 7.1.1 图片验证码

* 后端:
  * 需要一个生成验证码controller,并将生成的验证码随机字符串存放到redis中
  * 用户登录时,获得验证码,对验证码进行校验
* 前端:
  * 编写表单,显示验证码(编写函数修改图片验证码路径),点击时可以切换
  * 网关放行

1. 需要一个生成验证码controller,并将生成的验证码随机字符串存放到redis中

2. 用户登录时,获得验证码,对验证码进行校验

   @PostMapping("/login")public BaseResult login(@RequestBody TbUser tbUser) {//0.1 校验:图片验证码String key = "login" + tbUser.getUserName();String redisVerifyCode = stringRedisTemplate.opsForValue().get(key);stringRedisTemplate.delete(key);if(redisVerifyCode == null) {return BaseResult.error("验证码无效");}if(! redisVerifyCode.equalsIgnoreCase(tbUser.getImageVerifyCode())) {return BaseResult.error("验证码错误");}//.....}

3. 编写表单,显示验证码(编写函数修改图片验证码路径),点击时可以切换

4. 网关放行

### 7.1.2 邮箱验证码

* 方案1:使用邮件发送工具类,直接发送邮件。【选择】
  * 特点:工具依赖第三方,所以第三方如果比较慢时,我们的程序也会慢
* 方案2:使用MQ作为中间件共享发送的信息,然后使用MQ服务进行邮件的发送。(之前演示)
  * 特点:使用MQ将第三方解耦,我们的程序不需要依赖第三方的响应时间。

* 后端:
  * 准备工作:坐标、yml、工具类
  * 编写send方法,用于邮件的发送
  * 用户登录时,校验邮箱验证码
* 前端:
  * 提供填写邮箱的位置,并有发送按钮
  * 提供填写验证码的位置
  * 网关放行

* 后端:

  * 准备工作:坐标、yml、工具类

    ~~~xml
   
           
                org.springframework.boot
                spring-boot-starter-mail
           

    ~~~

    ~~~yml
    spring:
      mail:
        host: smtp.126.com          #发送邮件服务器
        username: itcast_lt@126.com #账号
        password: 1qaz2wsx          #密码
        default-encoding: UTF-8     #默认编码时
    ~~~

    

  * 编写send方法,用于邮件的发送

 @Resourceprivate JavaMailSender javaMailSender;@PostMapping("/send")public BaseResult send(@RequestBody TbUser tbUser) {try {// 随机验证码String code = RandomStringUtils.randomNumeric(4);// 保存到redisString key = "loginEmail" + tbUser.getUserName();stringRedisTemplate.opsForValue().set(key, code , 5 , TimeUnit.MINUTES);// 发送EmailUtils.sendEmail(javaMailSender, "用户登录", tbUser.getEmail(), "验证码为:" + code);// 返回return BaseResult.ok("邮件发送成功");} catch (Exception e) {e.printStackTrace();return BaseResult.error("发送邮件失败");}}

  * 用户登录时,校验邮箱验证码

  //0.2 校验:邮件验证码String keyEmail = "loginEmail" + tbUser.getUserName();String redisEmailVerifyCode = stringRedisTemplate.opsForValue().get(keyEmail);stringRedisTemplate.delete(keyEmail);if(redisEmailVerifyCode == null) {return BaseResult.error("email验证码无效");}if(! redisEmailVerifyCode.equalsIgnoreCase(tbUser.getEmailVerifyCode())) {return BaseResult.error("email验证码错误");}

* 前端:

  * 提供填写邮箱的位置,并有发送按钮

async sendEmail() {let { data: baseResult } = await this.$axios.post(`/user-service/user/send`, this.user)// 提示if( baseResult.code == 20000 ) {this.$message.success( baseResult.message )} else {this.$message.error( baseResult.message )}}

  * 提供填写验证码的位置

  * 网关放行

### 7.1.3 作业:短信验证码

## 7.2 学生列表升级

* 注释掉原有内容:

* 编写 asyncData 发送SSR请求

  ~~~js
    async asyncData( context ) {
      // ajax
      let { data: baseResult } = await context.$axios.get('/classes-service/classes')
      // 返回结果
      return {
        classesList: baseResult.data
      }
    },
  ~~~

  

* 注意:SSR发送请求时,无法获得浏览器端相应的内容(localStorage、sessionStorage、cookie 等)

  * 在网关放行

## 7.3 角色列表升级

* 注释已有的

* 编写asyncData发送2次ajax

  ~~~js
    async asyncData( context ) {
      // 发送2次ajax
      let ajax1 = context.$axios.get('/user-service/role')
      let ajax2 = context.$axios.get(`/user-service/perm/parent/0`)
      let [{data: roleBaseResult}, {data: permBaseResult}] = await Promise.all([ajax1, ajax2])
      // 处理数据
      return {
        roleList: roleBaseResult.data,
        permList: permBaseResult.data
      }
    },
  ~~~

* 网关配置

相关内容

热门资讯

吉利起诉欣旺达,理想汽车躺枪? 想象一下,我从你这里采购电池,还替你宣传,结果因为你的质量问题让大家质疑我,这是一种什么感受? 1...
獐子岛:近12个月新增累计诉讼... 12月29日,獐子岛(002069)发布公告,截止到公告披露日,公司及控股子公司在最近十二个月内累计...
政策迎重大调整!概念股集体飙涨... 12月29日,A股市场主要股指震荡走势,沪指收盘微涨0.04%,录得九连阳。从板块上来看,数字人民币...
福石控股累计诉讼仲裁1792万... 12月29日,福石控股(300071)发布公告,截至公告披露日前,公司及子公司在过去十二个月内的累计...
犯罪收益达14.6亿韩元,享有... 金建希利用总统夫人身份,收受大量财物,并广泛介入了各种人士安排,“甚至可以称得上是现代卖官卖职”,韩...
金评天下丨“长钱长投”制度环境... 金融投资报评论员 刘柯 中国人民银行于12月26日发布《中国金融稳定报告(2025)》(以下简称《金...
偷拿自己快递再退款不是“薅羊毛... 网购下单付款,待快递到站后秘密取走,再以“未收到货”申请退款,这样的行为看似钻了“空子”,实则已触犯...
全球瞭望丨美媒集体抨击特朗普政... 新华社洛杉矶12月28日电(记者黄恒)美国加利福尼亚州多家地方媒体28日集体刊登同一篇社论,抨击特朗...
一个假律师凭啥“拿捏”酒企? ... 打着“维权”的幌子,干着敲诈的勾当,事后还要签订“法律服务”合同……江苏宿迁一名假律师专门敲诈酒企,...