From 92fc93e5b46608910436910503d2986e3a0a2e6a Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sun, 28 Jul 2024 00:10:10 +0800 Subject: [PATCH] =?UTF-8?q?=20feat(=E4=BF=AE=E6=94=B9):=20:bug:=20?= =?UTF-8?q?=E5=9B=BE=E5=BD=A2=E9=AA=8C=E8=AF=81=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bunny/security/config/WebSecurityConfig.java | 3 ++- .../src/main/resources/application.yml | 3 ++- .../service/web/config/WebMvcConfiguration.java | 3 ++- .../service/web/controller/LoginController.java | 14 ++++++++++++++ .../bunny/service/web/service/LoginService.java | 7 +++++++ .../web/service/impl/LoginServiceImpl.java | 15 +++++++++++++-- .../src/main/resources/application.yml | 4 ++-- 7 files changed, 42 insertions(+), 7 deletions(-) diff --git a/module/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java b/module/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java index 5899405..2dce153 100644 --- a/module/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java +++ b/module/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java @@ -89,7 +89,8 @@ public class WebSecurityConfig { @Bean public WebSecurityCustomizer webSecurityCustomizer() { String[] annotations = {"/", "/test/**", "/diagram-viewer/**", "/editor-app/**", "/*.html", - "/*/*/noAuth/**", "/*/noAuth/**", "/favicon.ico", "/swagger-resources/**", "/webjars/**", "/v3/**", "/swagger-ui.html/**", "/doc.html"}; + "/*/*/noAuth/**", "/*/noAuth/**", "/favicon.ico", "/swagger-resources/**", "/webjars/**", + "/v3/**", "/swagger-ui.html/**", "/doc.html"}; return web -> web.ignoring().requestMatchers(annotations); } } diff --git a/service/service-admin/src/main/resources/application.yml b/service/service-admin/src/main/resources/application.yml index 6cc626d..8f3dedb 100644 --- a/service/service-admin/src/main/resources/application.yml +++ b/service/service-admin/src/main/resources/application.yml @@ -23,7 +23,8 @@ spring: grace-destroy: false #是否优雅关闭数据源,默认为false,设置为true时,关闭数据源时如果数据源中还存在活跃连接,至多等待10s后强制关闭 datasource: master: - driver-class-name: com.zaxxer.hikari.HikariDataSource + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true username: ${bunny.datasource.username} password: ${bunny.datasource.password} diff --git a/service/service-web/src/main/java/cn/bunny/service/web/config/WebMvcConfiguration.java b/service/service-web/src/main/java/cn/bunny/service/web/config/WebMvcConfiguration.java index 197bcfe..8fb4af5 100644 --- a/service/service-web/src/main/java/cn/bunny/service/web/config/WebMvcConfiguration.java +++ b/service/service-web/src/main/java/cn/bunny/service/web/config/WebMvcConfiguration.java @@ -30,8 +30,9 @@ public class WebMvcConfiguration implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - String[] excludeList = {"/api/checkCode", "/api/sendEmailCode", "/api/register", "/api/login", "/api/article/loadArticle/**"}; log.info("WebMvcConfiguration===>开始注册自定义拦截器..."); + + String[] excludeList = {"/api/**", "/api/sendEmailCode", "/api/register", "/api/login", "/**"}; registry.addInterceptor(userTokenInterceptor).addPathPatterns("/api/**") .excludePathPatterns(excludeList); } diff --git a/service/service-web/src/main/java/cn/bunny/service/web/controller/LoginController.java b/service/service-web/src/main/java/cn/bunny/service/web/controller/LoginController.java index 89a4b3a..80cca3a 100644 --- a/service/service-web/src/main/java/cn/bunny/service/web/controller/LoginController.java +++ b/service/service-web/src/main/java/cn/bunny/service/web/controller/LoginController.java @@ -9,6 +9,10 @@ import cn.bunny.vo.system.login.ValidateCodeVo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @Tag(name = "登录和注册相关接口") @@ -32,6 +36,16 @@ public class LoginController { return Result.success(vo); } + @Operation(summary = "生成图片验证码", description = "生成图验证码") + @GetMapping("checkCodeImage") + public ResponseEntity checkCodeImage() { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.IMAGE_JPEG); + + byte[] checkCodeImage = loginService.checkCodeImage(); + return new ResponseEntity<>(checkCodeImage, headers, HttpStatus.OK); + } + @Operation(summary = "发送邮箱验证码", description = "发送邮箱验证码") @PostMapping("sendEmailCode") public Result sendEmailCode(String email) { diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java b/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java index 4c58e1f..714526f 100644 --- a/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java +++ b/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java @@ -41,4 +41,11 @@ public interface LoginService extends IService { * 退出登录 */ void logout(); + + /** + * * 生成图片验证码 + * + * @return 验证码图片 + */ + byte[] checkCodeImage(); } diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java index d499e14..9767b07 100644 --- a/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java +++ b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java @@ -6,12 +6,12 @@ import cn.bunny.common.service.utils.EmptyUtil; import cn.bunny.common.service.utils.JwtHelper; import cn.bunny.dto.user.LoginDto; import cn.bunny.dto.user.RegisterDto; -import cn.bunny.pojo.email.EmailSend; -import cn.bunny.pojo.email.EmailSendInit; import cn.bunny.entity.system.email.EmailTemplate; import cn.bunny.entity.system.email.EmailUsers; import cn.bunny.entity.system.user.User; import cn.bunny.module.mail.utils.MailSenderUtil; +import cn.bunny.pojo.email.EmailSend; +import cn.bunny.pojo.email.EmailSendInit; import cn.bunny.pojo.result.constant.ExceptionConstant; import cn.bunny.pojo.result.constant.MailMessageConstant; import cn.bunny.pojo.result.constant.RedisUserConstant; @@ -171,4 +171,15 @@ public class LoginServiceImpl extends ServiceImpl implements L // 删除Redis中用户信息 redisTemplate.delete(RedisUserConstant.getUserLoginInfoPrefix(user.getEmail())); } + + /** + * * 生成图片验证码 + * + * @return 验证码图片 + */ + @Override + public byte[] checkCodeImage() { + CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(150, 48, 4, 2); + return captcha.getImageBytes(); + } } diff --git a/service/service-web/src/main/resources/application.yml b/service/service-web/src/main/resources/application.yml index 967de2c..772cb81 100644 --- a/service/service-web/src/main/resources/application.yml +++ b/service/service-web/src/main/resources/application.yml @@ -23,11 +23,11 @@ spring: grace-destroy: false #是否优雅关闭数据源,默认为false,设置为true时,关闭数据源时如果数据源中还存在活跃连接,至多等待10s后强制关闭 datasource: master: - driver-class-name: com.zaxxer.hikari.HikariDataSource + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true username: ${bunny.datasource.username} password: ${bunny.datasource.password} - # aop: enabled: true