这是一个非常棘手的问题,我知道。好吧,我会尽力澄清它。
我正在用JWT和OAuth2保护的Spring中编写一个API,并且我不想使用Spring Security层。换句话说,我想使用自己的规则等来创建自己的安全层...
也就是说,我在国外找到了创建此图层网络的两种选择。
使用AspectJ,我可以创建一个方面来包装每个用@MySecurityAnnotation(role="bar", permission="foo", group="blah")
注释的方法,并允许没有用户在没有正确许可的情况下调用joinPoint
。
通过这种方法,代码被混淆了,因为AspectJ将代码注入了 .class 最终文件。 (如果我胡说八道,请纠正我)。另一方面,因为代码已经包装,所以我不需要通过反射来验证带注释的类型。
使用拦截器,顾名思义,它为每个HandlerMethod
创建了一个拦截点,现在我需要检查每个请求中请求是否指向HandlerMethod
,因为它应该是为了验证用户凭据。
所以我认为,这要比AspectJ实现慢一些,因为我们需要通过反射检查带注释的方法,以获取访问端点所需的角色/权限。
好,我已经解释了这两种情况,现在我只想知道哪种情况最好,什么情况下。有人像我一样花时间思考吗?还有没有列出的其他实现吗?没有Spring Security层,是否有更好的方法在Spring API中实现安全性?请让我知道。
感谢所有帮助。