盒子里的加菲猫 2023-02-16 11:51 采纳率: 73.1%
浏览 45
已结题

SpringBoot生成的随机验证码如何存放在Redis临时数据库中

我用简单的SpringMVC框架搭建了一个简单的后端登录验证接口,但是我这里想临时存放验证码的数据。并且想放在关系型数据库中。请问一下我应该如何配置?

package com.zzj.controller;

import cn.hutool.core.util.RandomUtil;
import cn.hutool.http.server.HttpServerRequest;
import com.zzj.util.APIResultUtil;
import com.zzj.util.MybatisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;

import javax.mail.Session;

@CrossOrigin
@RestController
@RequestMapping("/api")
public class EmailAPi {
    @Autowired
    private JavaMailSender javaMailSender = null;
    private Integer emailID = null;

    @Value("${spring.mail.username}")
    @RequestMapping("/Email")
    public Object Email(@RequestParam(value = "Email") String Email) {
//        request.get
        if (MybatisUtil.ifEmail(Email)) {
            try {
                SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
                emailID = RandomUtil.randomInt(100000, 999999);
                simpleMailMessage.setFrom("875198099@qq.com"); //设置发送邮件账号
                simpleMailMessage.setTo(Email); //设置接收邮件的人,可以多个
                simpleMailMessage.setSubject("您的验证码"); //设置发送邮件的主题
                simpleMailMessage.setText("你正在【修改" + Email + "】验证码" + emailID + ",提供给他人会导致账户被盗和资产损失,若非本人操作,请修改密码"); //设置发送邮件的内容
                javaMailSender.send(simpleMailMessage);
                return APIResultUtil.apiResult(true, "发送成功", null);
            } catch (MailException e) {
                return APIResultUtil.apiResult(false, "ERROR:" + e, null);
            }
        } else {
            return APIResultUtil.apiResult(false, "邮箱不存在,请注册!", null);
        }
    }
}
  • 写回答

3条回答 默认 最新

  • 一纸红尘轻似梦 2023-02-16 12:13
    关注

    1、可以使用Spring Data Redis来实现。
    2、将Spring Data Redis添加为项目的依赖项。使用Maven,则可以在pom.xml文件中添加以下依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

    3、接下来,需要创建一个RedisTemplate bean来连接到Redis服务器。可以在Spring Boot的应用程序类中添加以下代码,这将创建一个RedisTemplate bean,它可以用于与Redis服务器交互。

    @Configuration
    public class RedisConfig {
    
        @Bean
        JedisConnectionFactory jedisConnectionFactory() {
            return new JedisConnectionFactory();
        }
    
        @Bean
        RedisTemplate<String, Object> redisTemplate() {
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            template.setConnectionFactory(jedisConnectionFactory());
            return template;
        }
    }
    
    

    4、在需要生成随机验证码的地方使用RedisTemplate bean将验证码存储在Redis数据库中。例如,可以使用以下代码生成一个六位数的随机验证码并将其存储在Redis中:

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    private String generateCode() {
        Random random = new Random();
        String code = String.format("%06d", random.nextInt(999999));
        redisTemplate.opsForValue().set("verification_code", code, 5, TimeUnit.MINUTES);
        return code;
    }
    

    在这个示例中,使用RedisTemplate bean将验证码存储在Redis数据库中,并将其键设置为“verification_code”。验证码将在5分钟后过期。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 2月16日