由于EJB授权对我的需求太有限,我想将Spring Security与EJB一起使用。对于身份验证,我也想使用Spring Security。问题是,如果我可以在EJB中使用Spring Security上下文。
情景:
通常在线程本地对象中保存的安全上下文是否会通过servlet和ejb层传播,以便我可以将其用于安全检查?
答案 0 :(得分:1)
如果您在集群中运行,或者在不同服务器上运行EJB,那么每个服务器(当然)都将运行它自己的线程,因此不会发生传播。
如果它们都在同一台服务器上,那么它们可能会,但我认为它取决于供应商,除非您使用的是本地而不是远程接口。
答案 1 :(得分:1)
如果没有涉及远程调用,您将能够访问Spring Security上下文,但是您将无法直接使用任何需要代理对象的Spring Security声明性安全功能。
您可以使用来自servlet层的Spring bean(实现与EJB相同的接口,并委托给它们),并对这些接口应用安全性。如果您希望这样做,这也允许您从EJB迁移。
另一种选择是考虑Spring Security的AspectJ支持,它应该与EJB一起使用。