This commit is contained in:
Guwan 2024-12-06 22:26:17 +08:00
parent 73717d6e6f
commit 91302cb95a
5 changed files with 41 additions and 4 deletions

View File

@ -15,7 +15,7 @@ public class SecurityConstants {
"/demo/**", // 测试接口 "/demo/**", // 测试接口
"/api/user/register", // 用户注册 "/api/user/register", // 用户注册
"/api/user/login", // 用户登录 "/api/user/login", // 用户登录
"/api/user/register/email", // 邮箱注册 "/api/user/getEmailCode", // 邮箱注册
"/api/user/register/phone", // 手机号注册 "/api/user/register/phone", // 手机号注册
"/api/user/email/code", // 获取邮箱验证码 "/api/user/email/code", // 获取邮箱验证码
"/api/user/phone/code" // 获取手机验证码 "/api/user/phone/code" // 获取手机验证码

View File

@ -16,7 +16,7 @@ import org.thymeleaf.context.Context;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/demo") @RequestMapping("/user")
@RequiredArgsConstructor @RequiredArgsConstructor
@Validated @Validated
public class DemoController { public class DemoController {

View File

@ -1,9 +1,13 @@
package com.guwan.backend.controller; package com.guwan.backend.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import com.guwan.backend.common.Result; import com.guwan.backend.common.Result;
import com.guwan.backend.dto.user.RegisterDTO; import com.guwan.backend.dto.user.RegisterDTO;
import com.guwan.backend.dto.user.UserDTO; import com.guwan.backend.dto.user.UserDTO;
import com.guwan.backend.service.EmailService;
import com.guwan.backend.service.UserService; import com.guwan.backend.service.UserService;
import com.guwan.backend.util.RedisUtils;
import com.guwan.backend.vo.user.LoginRequest; import com.guwan.backend.vo.user.LoginRequest;
import com.guwan.backend.vo.user.RegisterRequest; import com.guwan.backend.vo.user.RegisterRequest;
import com.guwan.backend.vo.user.EmailRegisterRequest; import com.guwan.backend.vo.user.EmailRegisterRequest;
@ -15,6 +19,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Email;
import org.thymeleaf.context.Context;
import java.util.Map;
@Slf4j @Slf4j
@RestController @RestController
@ -25,6 +32,10 @@ public class UserController {
private final UserService userService; private final UserService userService;
private final EmailService emailService;
private final RedisUtils redisUtils;
@PostMapping("/register") @PostMapping("/register")
public Result<UserDTO> register(@RequestBody @Valid RegisterDTO request) { public Result<UserDTO> register(@RequestBody @Valid RegisterDTO request) {
try { try {
@ -89,6 +100,24 @@ public class UserController {
return Result.success(userService.registerByEmail(request)); return Result.success(userService.registerByEmail(request));
} }
@PostMapping("/getEmailCode")
public Result getEmailCode(@RequestBody Map<String, Object> params) {
String email = (String) params.get("email");
log.info("邮箱注册: {}", email);
Context context = new Context();
context.setVariable("nowDate", DateUtil.now());
String code = RandomUtil.randomNumbers(6);
redisUtils.set(email, code, 10);
context.setVariable("code", code.toCharArray());
emailService.sendHtmlMessage(email,
"养老平台邮箱验证码", "email_template.html", context);
return Result.success();
}
@PostMapping("/register/phone") @PostMapping("/register/phone")
public Result<UserDTO> registerByPhone(@RequestBody @Valid PhoneRegisterRequest request) { public Result<UserDTO> registerByPhone(@RequestBody @Valid PhoneRegisterRequest request) {
log.info("手机号注册: {}", request.getPhone()); log.info("手机号注册: {}", request.getPhone());

View File

@ -24,6 +24,14 @@ import java.io.IOException;
* JWT认证过滤器 * JWT认证过滤器
* 负责处理JWT token的验证和用户认证 * 负责处理JWT token的验证和用户认证
*/ */
/**
* SecurityConfig JwtAuthenticationFilter 之间的关系是
* 在SecurityConfig中配置JwtAuthenticationFilter
* 使其成为Spring Security过滤器链的一部分
* 这样当请求到达时JwtAuthenticationFilter会先于Spring Security的其他过滤器执行以验证JWT的有效性
*/
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor

View File

@ -10,13 +10,13 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: 123456 password: root
# Redis配置 # Redis配置
data: data:
redis: redis:
host: localhost host: localhost
port: 6380 port: 6379
password: 123456 # 如果有密码,请设置 password: 123456 # 如果有密码,请设置
database: 8 database: 8
timeout: 10000 timeout: 10000