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