谷粒学院 Day12.登录页面模式、整合JWT、整合QQ邮箱、用户登录注册接口【后端】、用户登录注册【前端】

项目结构:

配置文件

 application.properties配置类

spring.jackson.time-zone=GMT+8

# nacos注册中心
spring.cloud.nacos.discovery.server-addr= 127.0.0.1:8848

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

# redis
spring.redis.host=填你的ip地址
spring.redis.port=6379
spring.redis.database= 0
spring.redis.timeout=1800000
spring.redis.password=root123
spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1
#最大阻塞等待时间(负数表示没限制)
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0
#最小空闲

application.yml配置文件

spring:
  mail:
    # 下面这个是QQ邮箱host , 企业邮箱 : smtp.exmail.qq.com
    host: smtp.qq.com
    # tencent mail port  这个是固定的
    port: 465
    # 你的QQ邮箱
    username: XXXXXXX@qq.com
    # 进入邮箱配置后得到的授权码
    password: 填你自己的QQ授权码
    test-connection: true
    properties:
      mail:
        smtp:
          ssl:
            enable: true

CV过去注意看看配置类有没有空格。格式对不对。[dog.jpg]

 编写SmsController类

@RestController
@RequestMapping("/edusms/sms")
@CrossOrigin
public class SmsController {

    @Autowired
    JavaMailSenderImpl mailSender;

    @Autowired
    private RedisTemplate<String,String> redisTemplate; //redis模板

    @PostMapping("sendEmail/{DstEmail}")
    public R sendEmail(@PathVariable String DstEmail) {
        //从redis中获取验证码,如果获取到直接返回
        String verCode = redisTemplate.opsForValue().get(DstEmail);
        if (!StringUtils.isEmpty(verCode)){
            return R.ok();
        }
        //如果获取不到,进行邮箱发送
        //创建邮件消息
        SimpleMailMessage message = new SimpleMailMessage();
        //发送人邮箱
        message.setFrom("XXXXXXX@qq.com");
        //接收人邮箱
        message.setTo(DstEmail);
        message.setSubject("[因特学院]");
        verCode = RandomUtil.getSixBitRandom();
        message.setText("您好:\n"
                + "\n本次请求的邮件验证码为:" + verCode + ",本验证码 5 分钟内效,请及时输入。(请勿泄露此验证码)\n"
                + "\n如非本人操作,请忽略该邮件。\n(这是一封通过自动发送的邮件,请不要直接回复)");
        mailSender.send(message);
        //把发送成功的验证码存放到redis里面
        //设置有效时间
        redisTemplate.opsForValue().set(DstEmail,verCode,5, TimeUnit.MINUTES);
        return R.ok();
    }
}

这里基本上都是和老师的一致,生成随机数的方式也是用的RandomUtil类

不同的是,controller类的映射类路径和老师的不一致,用邮箱实现方法中设置了一个参数DstEmail,这个意思是接收方邮箱,在后面message.setTo()的时候要用

主启动类

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan("com.czy")
public class SmsApplication {
    public static void main(String[] args) {
        SpringApplication.run(SmsApplication.class,args);
    }
}

这个用QQ邮箱发送短信的功能板块就实现了,配置一下nginx.conf,然后用swagger测一下,没问题了在继续往下进行,编写service_ucenter板块,这个板块使用代码生成器生成,细节要注意

主启动类UcenterApplication

@ComponentScan({"com.czy"})
@SpringBootApplication
@MapperScan("com.czy.educenter.mapper")
public class UcenterApplication {
    public static void main(String[] args) {
        SpringApplication.run(UcenterApplication.class,args);
    }
}

然后UcenterMemberController类

@RestController
@RequestMapping("/educenter/member")
@CrossOrigin
public class UcenterMemberController {

    @Autowired
    private UcenterMemberService memberService;

    //登录
    @PostMapping("login")
    public R loginUser(@RequestBody UcenterMember member){
        //member封装手机号和密码
        //调用service方法实现登录
        //返回token值,使用jwt生成
        String token =  memberService.login(member);
        return R.ok().data("token",token);
    }

    //注册
    @PostMapping("register")
    public R registerUser(@RequestBody RegisterVo registerVo){
        memberService.register(registerVo);
        return R.ok();
    }

    //根据token获取用户信息
    @GetMapping("getMemberInfo")
    public R getMemberInfo(HttpServletRequest request){
        //调用jwt工具类的方法,根据reques
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值