diff --git a/pom.xml b/pom.xml index 80cc69d..de139c0 100644 --- a/pom.xml +++ b/pom.xml @@ -31,11 +31,13 @@ mybatis-spring-boot-starter 2.2.2 + com.baomidou mybatis-plus-boot-starter 3.5.1 + org.springframework.boot spring-boot-starter-data-redis @@ -54,7 +56,7 @@ org.apache.commons commons-lang3 - 3.12.0 + 3.18.0 @@ -62,10 +64,11 @@ knife4j-spring-boot-starter 3.0.3 + cn.hutool hutool-all - 5.8.38 + 5.8.41 org.springframework.boot @@ -73,6 +76,7 @@ runtime true + org.postgresql postgresql @@ -94,6 +98,13 @@ spring-boot-starter-test test + + + cn.dev33 + sa-token-spring-boot-starter + 1.44.0 + compile + junit @@ -101,6 +112,12 @@ 4.13.2 test + + + org.springframework.boot + spring-boot-starter-logging + + @@ -120,4 +137,4 @@ - + \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/MyApplication.java b/src/main/java/com/yolo/keyborad/MyApplication.java index 306d922..7137577 100644 --- a/src/main/java/com/yolo/keyborad/MyApplication.java +++ b/src/main/java/com/yolo/keyborad/MyApplication.java @@ -2,6 +2,7 @@ package com.yolo.keyborad; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; +import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -9,11 +10,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.yolo.keyborad.mapper") public class MyApplication { - public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); - log.info("info message"); - log.error("error message"); } } diff --git a/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java b/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java new file mode 100644 index 0000000..82f2086 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java @@ -0,0 +1,57 @@ +package com.yolo.keyborad.config; + +import cn.dev33.satoken.fun.strategy.SaCorsHandleFunction; +import cn.dev33.satoken.interceptor.SaInterceptor; +import cn.dev33.satoken.router.SaHttpMethod; +import cn.dev33.satoken.router.SaRouter; +import cn.dev33.satoken.stp.StpUtil; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class SaTokenConfigure implements WebMvcConfigurer { + // 注册拦截器 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 + registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) + .addPathPatterns("/**") + .excludePathPatterns(getExcludePaths()); + } + private String[] getExcludePaths() { + return new String[]{ + // Swagger & Knife4j 相关 + "/doc.html", + "/webjars/**", + "/swagger-resources/**", + "/v2/api-docs", + "/v3/api-docs", + "/v3/api-docs/**", + "/swagger-ui.html", + "/swagger-ui/**", + "/favicon.ico", + // 你的其他放行路径,例如登录接口 + "/demo/test" + }; + } + @Bean + public SaCorsHandleFunction corsHandle() { + return (req, res, sto) -> { + res. + // 允许指定域访问跨域资源 + setHeader("Access-Control-Allow-Origin", "*") + // 允许所有请求方式 + .setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE") + // 有效时间 + .setHeader("Access-Control-Max-Age", "3600") + // 允许的header参数 + .setHeader("Access-Control-Allow-Headers", "*"); + + // 如果是预检请求,则立即返回到前端 + SaRouter.match(SaHttpMethod.OPTIONS) + .back(); + }; + } +} diff --git a/src/main/java/com/yolo/keyborad/controller/DemoController.java b/src/main/java/com/yolo/keyborad/controller/DemoController.java index 5f4dec7..075b8dd 100644 --- a/src/main/java/com/yolo/keyborad/controller/DemoController.java +++ b/src/main/java/com/yolo/keyborad/controller/DemoController.java @@ -3,7 +3,10 @@ package com.yolo.keyborad.controller; import com.yolo.keyborad.common.BaseResponse; import com.yolo.keyborad.common.ResultUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /* * @author: ziin diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 1900b47..6efee5e 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -3,4 +3,15 @@ spring: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/postgres username: root - password: 123asd \ No newline at end of file + password: 123asd + +knife4j: + enable: true + openapi: + title: "接口文档" + version: 1.0 + group: + default: + api-rule: package + api-rule-resources: + - com.yolo.keyborad.controller \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 398f7ef..2b2b487 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: application: - name: springboot-init + name: keyborad-backend profiles: active: dev datasource: @@ -27,7 +27,7 @@ server: mybatis-plus: configuration: map-underscore-to-camel-case: false - log-impl: org.apache.ibatis.logging.log4j2.Log4j2Impl + log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl global-config: db-config: logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)