UserPermissionCheckAOP.java
2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.tianbo.analysis.annotation;
import com.tianbo.analysis.dao.COMPANYUSERMapper;
import com.tianbo.analysis.model.COMPANYUSER;
import com.tianbo.analysis.model.ResultJson;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.CodeSignature;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Method;
@Aspect
@Component
public class UserPermissionCheckAOP {
@Resource
COMPANYUSERMapper companyuserMapper;
@Pointcut("@annotation(com.tianbo.analysis.annotation.UserPermissionCheck)")
public void annotationPointCut(){
}
@Before("annotationPointCut()")
public void before(JoinPoint joinPoint){
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method= signature.getMethod();
UserPermissionCheck annotation = method.getAnnotation(UserPermissionCheck.class);
System.out.print("打印:权限校验 开始前");
}
@Around("annotationPointCut()")
public Object advice(ProceedingJoinPoint joinPoint){
System.out.println("通知之开始");
Object[] args = joinPoint.getArgs();
String[] paramNames = ((CodeSignature) joinPoint.getSignature()).getParameterNames();
COMPANYUSER user = new COMPANYUSER();
if (args != null && args.length > 0) {
for (int i = 0; i < paramNames.length; i++) {
System.out.println("参数>>"+paramNames[i]+","+args[i]);
if ("username".equals(paramNames[i])){
user.setCropCode(args[i].toString());
}
if ("userid".equals(paramNames[i])){
user.setId(args[i].toString());
}
}
}
Object retmsg=null;
try {
//检查用户名与用户ID是否一致
COMPANYUSER usercheck = companyuserMapper.selectByIdAndName(user);
if (usercheck==null){
//todo:检查用户页面访问权限。权限不对或者用户名不一致 都返回401
return new ResultJson("401","无访问权限");
}
retmsg=joinPoint.proceed(args);
System.err.println("++++++++"+retmsg);
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("通知之结束");
return retmsg;
}
@After("annotationPointCut()")
public void after(){
System.out.println("after方法执行后");
}
}