Skip to content

Commit ce28c3d

Browse files
committed
feat(security): IPermissionUrlService 添加 ignoreCheck 方法
1 parent d15e6b9 commit ce28c3d

3 files changed

Lines changed: 32 additions & 5 deletions

File tree

security-spring-boot-starter/src/main/java/com/admin4j/framework/security/authorization/IPermissionUriService.java renamed to security-spring-boot-starter/src/main/java/com/admin4j/framework/security/authorization/IPermissionUrlService.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,18 @@
88
* @author andanyang
99
* @since 2023/12/19 14:34
1010
*/
11-
public interface IPermissionUriService {
11+
public interface IPermissionUrlService {
1212

13+
/**
14+
* 是否忽略 检查权限
15+
* 例如 admin、管理员可以直接忽略检查拥有全部权限
16+
*
17+
* @return
18+
*/
19+
default boolean ignoreCheck() {
20+
return false;
21+
}
22+
1323
/**
1424
* 获取 系统 所有的 PermissionUri
1525
*
@@ -23,4 +33,6 @@ public interface IPermissionUriService {
2333
* @return
2434
*/
2535
List<HttpUrlPermission> getMyPermissionUrls();
36+
37+
2638
}

security-spring-boot-starter/src/main/java/com/admin4j/framework/security/authorization/PermissionAuthorizationManager.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class PermissionAuthorizationManager implements AuthorizationManager<Requ
2929
*/
3030
protected static final AuthorizationDecision UN_AUTHORIZED = new AuthorizationDecision(false);
3131

32-
protected final IPermissionUriService permissionUriService;
32+
protected final IPermissionUrlService permissionUriService;
3333

3434
protected AntPathMatcher antPathMatcher = new AntPathMatcher();
3535

@@ -43,6 +43,10 @@ public class PermissionAuthorizationManager implements AuthorizationManager<Requ
4343
@Override
4444
public AuthorizationDecision check(Supplier<Authentication> authentication, RequestAuthorizationContext object) {
4545

46+
if (ignoreCheck()) {
47+
return GRANTED;
48+
}
49+
4650
// 获取当前请求的 URL 地址
4751
String requestURI = object.getRequest().getRequestURI();
4852
String method = object.getRequest().getMethod();
@@ -55,6 +59,17 @@ public AuthorizationDecision check(Supplier<Authentication> authentication, Requ
5559
return urlNeedPermission(requestURI, method) ? UN_AUTHORIZED : GRANTED;
5660
}
5761

62+
/**
63+
* 是否忽略 检查权限
64+
* 例如 admin、管理员可以直接忽略检查拥有全部权限
65+
*
66+
* @return
67+
*/
68+
protected boolean ignoreCheck() {
69+
70+
return permissionUriService.ignoreCheck();
71+
}
72+
5873
/**
5974
* url 是否需要授权
6075
* TODO 放在 service 立马

security-spring-boot-starter/src/main/java/com/admin4j/framework/security/configuration/PermissionAutoConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.admin4j.framework.security.configuration;
22

3-
import com.admin4j.framework.security.authorization.IPermissionUriService;
3+
import com.admin4j.framework.security.authorization.IPermissionUrlService;
44
import com.admin4j.framework.security.authorization.PermissionAuthorizationManager;
55
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
66
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -10,12 +10,12 @@
1010
* @author andanyang
1111
* @since 2023/12/19 14:40
1212
*/
13-
@ConditionalOnBean(IPermissionUriService.class)
13+
@ConditionalOnBean(IPermissionUrlService.class)
1414
@ConditionalOnMissingBean(PermissionAuthorizationManager.class)
1515
public class PermissionAutoConfiguration {
1616

1717
@Bean
18-
public PermissionAuthorizationManager permissionAuthorizationManager(IPermissionUriService permissionUriService) {
18+
public PermissionAuthorizationManager permissionAuthorizationManager(IPermissionUrlService permissionUriService) {
1919

2020
return new PermissionAuthorizationManager(permissionUriService);
2121
}

0 commit comments

Comments
 (0)