Java Shiro不同领域的不同饼干
假设我的应用程序处理两种特定的url模式Java Shiro不同领域的不同饼干,java,security,jakarta-ee,shiro,Java,Security,Jakarta Ee,Shiro,假设我的应用程序处理两种特定的url模式 /foo/*->只有FooUsers才有权访问,并在FooUserRealm中进行身份验证 /bar/*->只有BarUsers才有权访问,并在BarUserRealm中进行身份验证 我可以通过为这些url模式分配两个单独的authc过滤器并创建两个不同的身份验证令牌实例来处理正确领域的选择,然后领域只需声明它们支持哪种令牌类型 但是,我无法实现的是,经过身份验证后,用户将可以访问/bar/*URL,反之亦然。我真正想要实现的是,每个领域都有两个独立
- /foo/*->只有FooUsers才有权访问,并在FooUserRealm中进行身份验证
- /bar/*->只有BarUsers才有权访问,并在BarUserRealm中进行身份验证
有更好的方法吗?目前没有简单的方法。一个安全管理器意味着一个会话管理器。一个SessionManager意味着一个cookie 我能想到的使用一个SecurityManager的唯一方法是编写自己的SessionManager实现,并将其注入RealmSecurityManager,但正如dom farr所建议的那样,由于会话与ThreadLocals的耦合方式,您可能会陷入一个痛苦的世界
因此,如果我是你,我会创建两个不同的SecurityManager,每个都在SessionManager上设置了自己的cookie id。听起来像两个应用程序?我不会创建两个SecurityManager—一个痛苦的世界,因为它们是基于ThreadLocals的。也许可以扩展一下您关于领域是什么的问题,我也许可以提供一个解决方案。