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

发布于 2024-12-14 08:35:44 字数 231 浏览 0 评论 0原文

我有一些操作需要特定用户权限才能访问,因此我创建了一个方法注释 @RequiredPermission 和一个拦截器来验证将要执行的方法是否具有该注释以及是否验证了登录用户有权限。

问题是我不知道如何从 ActionIn Vocation 获取此信息,也不知道如何从 ActionContext 获取此信息。

我确信这应该是一种方法,因为如果不是的话,我会说它可能不是一个很好的框架。

有什么建议吗?

I have some actions that requires a specific user permission to be accessed, so I created a method annotation @RequiredPermission and a interceptor to verify if the method that is going to be executed have or not the annotation and if it have verify if the logged user have the permission.

The problem is that I don't know how to get this information from ActionInvocation and neither from ActionContext.

I'm sure that should be one way to do it, cause if not I'd say its probably a not good framework to work with.

Any tip?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

追星践月 2024-12-21 08:35:44

您需要的信息包含在 < code>ActionProxy,可通过 ActionInitation.getProxy()

拥有代理后,您就可以访问操作本身(从 ActionIn Vocation)和方法名称 (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;

或者无论如何你想处理实际的逻辑。

The information you need is contained in the ActionProxy, available via ActionInvocation.getProxy().

Once you have the proxy, you have access to the action itself (from the ActionInvocation) and the method name (ActionProxy.getMethod()) as a string.

From then on out it's normal Java reflection.

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;

Or however you want to handle the actual logic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文