我有一些需要特定用户权限才能访问的操作,因此我创建了一个方法注释 @RequiredPermission 和一个拦截器来验证将要执行的方法是否具有该注释以及是否具有验证登录用户有权限。
问题是我不知道如何从 ActionIn Vocation 获取此信息,也不知道如何从 ActionContext 获取此信息。
我确信这应该是一种方法,因为如果不是的话,我会说它可能是一个不好的框架。
有什么建议吗?
最佳答案
您需要的信息包含在 ActionProxy
中,可通过ActionInvocation.getProxy()
获得.
获得代理后,您就可以访问操作本身(从 ActionInvocau
)和字符串形式的方法名称 ( ActionProxy.getMethod()
)。
从那时起,它就是正常的 Java 反射。
Method method = action.getClass().getDeclaredMethod(actionmethod);
RequiredPermission permission = method.getAnnotation(RequiredPermission.class);
if (sessionUser.inRoles(permission.getRoles()) {
return invocation.invoke();
}
return Constants.LOGIN_REQUIRED_RESULT;
或者您想处理实际逻辑。
关于java - 在拦截器中获取执行方法注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037812/