通过注解@做细粒度权限控制
先定义一个注解
import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) public @interface AnnotationLimit { String mid(); String pid(); }
public static void main(String[] args) throws NoSuchMethodException, SecurityException { Method method = TestExc.class.getDeclaredMethod("hehe", String.class); if(method.isAnnotationPresent(AnnotationLimit.class)){ AnnotationLimit an = method.getAnnotation(AnnotationLimit.class); System.out.println(an.mid()+"#" + an.pid()); }else{ System.out.println("no limit"); } } @AnnotationLimit(mid="1", pid="2") static void hehe(String s){ System.out.println("nnn"); }
粗粒度权限控制,一般是通过session进行,session的话因为用户登录后修改数据库状态后,用户不能通过数据库实时查询进行控制。
通过注解可以得到配置信息再结合用户id进行实时查询看是否能访问url所对应的方法达到细粒度权限控制。