使用AspectJ和SpringInterceptor保护应用程序的安全

时间:2019-05-08 15:07:33

标签: java spring api security aspectj

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

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

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

  • AspectJ
  • 弹簧拦截器

AspectJ

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

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


弹簧拦截器

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

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


好,我已经解释了这两种情况,现在我只想知道哪种情况最好,什么情况下。有人像我一样花时间思考吗?还有没有列出的其他实现吗?没有Spring Security层,是否有更好的方法在Spring API中实现安全性?请让我知道。

感谢所有帮助。

0 个答案:

没有答案