Skip to content

Commit 1f6560c

Browse files
committed
feat: 复用Security接口,方便swagger展示
1 parent d0c646d commit 1f6560c

3 files changed

Lines changed: 78 additions & 6 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package top.cadecode.uniboot.controller;
2+
3+
import cn.hutool.http.HttpResponse;
4+
import cn.hutool.http.HttpUtil;
5+
import io.swagger.annotations.Api;
6+
import io.swagger.annotations.ApiOperation;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.web.bind.annotation.PostMapping;
10+
import org.springframework.web.bind.annotation.RequestMapping;
11+
import org.springframework.web.bind.annotation.RequestParam;
12+
import org.springframework.web.bind.annotation.RestController;
13+
import top.cadecode.uniboot.common.annotation.ApiFormat;
14+
import top.cadecode.uniboot.common.response.ApiResult;
15+
import top.cadecode.uniboot.common.util.JacksonUtil;
16+
import top.cadecode.uniboot.framework.config.SecurityConfig;
17+
import top.cadecode.uniboot.framework.security.TokenAuthHolder;
18+
19+
import javax.servlet.http.HttpServletRequest;
20+
import javax.servlet.http.HttpServletResponse;
21+
22+
/**
23+
* 认证API
24+
*
25+
* @author Cade Li
26+
* @since 2023/4/9
27+
*/
28+
@ApiFormat
29+
@Slf4j
30+
@RequiredArgsConstructor
31+
@Api(tags = "认证API")
32+
@RestController
33+
@RequestMapping("auth")
34+
public class AuthController {
35+
36+
private final TokenAuthHolder tokenAuthHolder;
37+
38+
/**
39+
* 复用Security login接口,方便swagger展示
40+
*/
41+
@ApiOperation("登录")
42+
@PostMapping("login")
43+
public ApiResult<?> login(HttpServletRequest request, HttpServletResponse response,
44+
@RequestParam String username, @RequestParam String password) {
45+
String replacedURL = request.getRequestURL().toString().replace("/auth/login", SecurityConfig.LOGIN_URL);
46+
HttpResponse loginRes = HttpUtil.createPost(replacedURL)
47+
.form(SecurityConfig.USERNAME_PARAMETER, username)
48+
.form(SecurityConfig.PASSWORD_PARAMETER, password)
49+
.execute();
50+
response.addHeader(tokenAuthHolder.getHeader(), loginRes.header(tokenAuthHolder.getHeader()));
51+
return JacksonUtil.toBean(loginRes.body(), ApiResult.class);
52+
}
53+
54+
/**
55+
* 复用Security logout接口,方便swagger展示
56+
*/
57+
@ApiOperation("注销")
58+
@PostMapping("logout")
59+
public ApiResult<?> login(HttpServletRequest request, HttpServletResponse response) {
60+
String replacedURL = request.getRequestURL().toString().replace("/auth/logout", SecurityConfig.LOGOUT_URL);
61+
HttpResponse loginRes = HttpUtil.createPost(replacedURL)
62+
.header(tokenAuthHolder.getHeader(), request.getHeader(tokenAuthHolder.getHeader()))
63+
.execute();
64+
return JacksonUtil.toBean(loginRes.body(), ApiResult.class);
65+
}
66+
}

application/src/main/resources/application-dev.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,13 @@ uni-boot:
3737
url: https://github.com/cadecode/uni-boot-admin
3838
email: cadecode@foxmail.com
3939
module:
40-
framework: top.cadecode.uniboot.framework
41-
demo: top.cadecode.uniboot.demo
40+
application: top.cadecode.uniboot.controller
41+
demo: top.cadecode.uniboot.demo.controller
4242
# security 配置
4343
security:
4444
auth-model: jwt
4545
token:
4646
header: token
4747
expiration: 86400
4848
secret: 12345678123456781234567812345678
49-
ignore-urls:
50-
- /druid/**
51-
- /actuator/**
52-
- /demo/**
49+
ignore-urls: /auth/**,/druid/**,/actuator/**,/demo/**

framework/src/main/java/top/cadecode/uniboot/framework/config/SecurityConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ public class SecurityConfig {
6565
*/
6666
public static final String LOGIN_URL = "/login";
6767

68+
/**
69+
* 登录参数
70+
*/
71+
public static final String USERNAME_PARAMETER = "username";
72+
public static final String PASSWORD_PARAMETER = "password";
73+
74+
6875
/**
6976
* 注销路径
7077
*/
@@ -142,6 +149,8 @@ protected void configure(HttpSecurity http) throws Exception {
142149
// 配置登录处理器
143150
http.formLogin().permitAll()
144151
.loginProcessingUrl(LOGIN_URL)
152+
.usernameParameter(USERNAME_PARAMETER)
153+
.passwordParameter(PASSWORD_PARAMETER)
145154
.successHandler(loginSuccessHandler)
146155
.failureHandler(loginFailureHandler);
147156
// 配置 Token 校验过滤器

0 commit comments

Comments
 (0)