我有一些需要访问特定用户权限的操作,因此我创建了一个方法注释@RequiredPermission和一个拦截器来验证将要执行的方法是否有注释,以及是否验证了记录的用户拥有权限。
问题是我不知道如何从ActionInvocation获取此信息,也不知道如何从ActionContext获取此信息。
我确信这应该是一种方法,如果不是,我会说它可能是一个不合适的框架。
任何提示?
答案 0 :(得分:4)
您需要的信息包含在ActionProxy
中,可通过ActionInvocation.getProxy()
获取。
拥有代理后,您可以将操作本身(来自ActionInvocation
)和方法名称(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;
或者你想要处理实际的逻辑。