首页 > 解决方案 > 使用 AspectJ 与 SpringInterceptor 保护应用程序

问题描述

这是一个非常棘手的问题,我知道。好吧,我会尽力澄清它。

我正在编写一个受 JWT 和 OAuth2 保护的 Spring API,我不想使用 Spring Security 层。换句话说,我想用我自己的规则创建我自己的安全层,等等......

也就是说,我找到了两种在国外创建此图层网络的选项。


方面J

使用 AspectJ,我可以创建一个方面来包装每个带有注释的方法,@MySecurityAnnotation(role="bar", permission="foo", group="blah")并允许用户在joinPoint没有正确权限的情况下调用。

使用这种方法,代码被混淆了,因为 AspectJ 将代码注入到.class最终文件中。(如果我说的是废话,请纠正我)。另一方面,我不需要通过反射来验证带注释的类型,因为代码已经被包装了。


弹簧拦截器

使用拦截器,顾名思义,它为每个请求创建了一个单点拦截HandlerMethod,现在我需要检查每个请求,如果请求指向 a HandlerMethod,它应该是为了验证用户凭据。

所以我认为这比 AspectJ 实现要慢,因为我们需要通过反射检查带注释的方法,以获取访问端点所需的角色/权限。


好的,我已经解释了这两种情况,现在我只想知道哪种情况最好以及在哪种情况下最好。有人会花几个小时思考这个问题,比如我?是否还有其他未列出的实现?有没有更好的方法在没有 Spring Security 层的 Spring API 中实现安全性?请告诉我。

感谢所有这些帮助。

标签: javaspringapisecurityaspectj

解决方案


推荐阅读