Apache Shiro:Filter vs Realm,使用哪一个?

Apache Shiro : Filter vs Realm, which one to use?

用例:HTTP 上下文,我需要限制对给定特定会话属性状态的 url 的访问

在自定义过滤器中扩展 AccessControlFilter 的 is* 方法可行,但它看起来有点难看:我没有 Realm。

AFAIK 领域用于 LDAP、JDBC、INI 后端等。每当我的 "realm" 实际上是网络绑定时,即 HttpSession 本身就是领域。

  1. 考虑到我在 HttpSession 中有我需要的信息,我的自定义过滤器是否是正确的保护方式
  2. 如果没有,您将如何将 Realm 绑定到基于 Web 的上下文?像 HttpSession 甚至 HttpServletRequest

您应该使用 Realm 来绑定您的用户 [Subject],即使您只是从过滤器中传递一些 object(即从 session 或 http header)

领域是将进行身份验证和授权的 object。一般而言,有两种类型的过滤器:构建传递到领域的令牌的过滤器(例如表单身份验证、基本身份验证等)和需要某种授权的过滤器(断言一个或多个角色 and/or 权限)