3 changed files with 67 additions and 15 deletions
-
20tp-admin/src/main/java/com/inscloudtech/web/controller/monitor/SysOperlogController.java
-
50tp-functional/src/main/java/com/inscloudtech/functional/aspect/SensitiveDBAspect.java
-
12tp-functional/src/main/java/com/inscloudtech/functional/controller/SensitiveDbController.java
@ -0,0 +1,50 @@ |
|||
package com.inscloudtech.functional.aspect; |
|||
|
|||
|
|||
|
|||
import cn.dev33.satoken.exception.NotPermissionException; |
|||
import cn.dev33.satoken.stp.StpUtil; |
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import com.inscloudtech.common.helper.LoginHelper; |
|||
import org.aspectj.lang.JoinPoint; |
|||
import org.aspectj.lang.ProceedingJoinPoint; |
|||
import org.aspectj.lang.annotation.*; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Component |
|||
@Aspect |
|||
public class SensitiveDBAspect { |
|||
|
|||
private static final String SENSITIVE_DB_PERMISSION = "system:sensitive:op"; |
|||
|
|||
private final String executeExpr = "execution(* com.inscloudtech.functional.controller.SensitiveDbController.*(..)))"; |
|||
|
|||
// 定义一个切点,拦截MyController的所有方法 |
|||
@Pointcut("execution(* com.inscloudtech.functional.controller.SensitiveDbController.*(..))") |
|||
public void myControllerPointcut() { |
|||
// 执行前置逻辑 |
|||
System.out.println("Before method: "); |
|||
} |
|||
|
|||
// 在控制器方法执行之前调用 |
|||
@Before("myControllerPointcut()") |
|||
public void beforeControllerMethod(JoinPoint joinPoint) { |
|||
LoginHelper.getLoginUser(); |
|||
List<String> permissionList = StpUtil.getPermissionList(); |
|||
if(CollectionUtil.isEmpty(permissionList) && !permissionList.contains(SENSITIVE_DB_PERMISSION)){ |
|||
throw new RuntimeException("当前用户无敏感数据库操作权限!"); |
|||
} |
|||
|
|||
// 执行前置逻辑 |
|||
System.out.println("Before method: " + joinPoint.getSignature().getName()); |
|||
} |
|||
|
|||
// 在控制器方法执行之后调用 |
|||
@After("myControllerPointcut()") |
|||
public void afterControllerMethod(JoinPoint joinPoint) { |
|||
// 执行后置逻辑 |
|||
System.out.println("After method: " + joinPoint.getSignature().getName()); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue