java - 在拦截器中获取执行方法注解

标签 java struts2 actioncontext

我有一些需要特定用户权限才能访问的操作,因此我创建了一个方法注释 @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/

相关文章:

java - Hibernate 类型与 Struts 2 的映射错误

java - Active directory auth Tomcat - 在操作中读取用户名?

maven - ActionContext.getContext().getParameters() 在 StrutsJUnit4TestCase 期间返回 null

session - 在 struts2 中获取 session 的最佳和推荐方法?

java - 如何在验收测试期间从 Struts 2 获取 ActionContext?

java - "App isn' t 响应“一旦启动应用程序

java - 使用instanceof检查特定子类是一个好的设计实践吗?

java - Spring MVC : Dynamic Param Name or Param Name using Regex?

java - 通过Socket传输大数据

java - Struts2 如果标签不起作用