我有一些需要特定用户权限才能访问的操作,因此我创建了一个方法注释 @RequiredPermission 和一个拦截器来验证将要执行的方法是否具有注释以及是否验证登录的用户有权限。
问题是我不知道如何从 ActionInvocation 和 ActionContext 中获取这些信息。
我确信这应该是一种方法,因为如果不是,我会说它可能不是一个很好的框架。
任何提示?
我有一些需要特定用户权限才能访问的操作,因此我创建了一个方法注释 @RequiredPermission 和一个拦截器来验证将要执行的方法是否具有注释以及是否验证登录的用户有权限。
问题是我不知道如何从 ActionInvocation 和 ActionContext 中获取这些信息。
我确信这应该是一种方法,因为如果不是,我会说它可能不是一个很好的框架。
任何提示?
您需要的信息包含在 中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;
或者您想处理实际的逻辑。