1

我们对 Apache Shiro 有一点问题。我们将 Shiro 与 JDBC 领域一起使用:用户、角色和权限存储在我们的 SQL 服务器数据库中。我们有一个用作后台的 java 应用程序,用于插入、更新或删除用户、角色和权限。但是我们需要对 Urls 过滤器做同样的事情。

我发现了一些关于它的东西,但我真的是 Shiro 的初学者,我不理解它们,而且通常,这些例子是 servlet 和 JSP(我们只使用 HTML/CSS/JS 和数据收集与网页服务)。

有人可以解释如何在数据库中而不是在 INI 文件中存储 url 和过滤器吗?

4

1 回答 1

1

Shiro 使用FilterChainManager接口的默认实现来管理和创建过滤器。您可以创建此接口的自定义实现以委托给您的数据库以获取配置信息。有关想法,请参阅DefaultFilterChainManager实现。

以下是这些东西在运行时的工作方式:

  1. 当一个请求进入 servlet 容器时,它会被ShiroFilter.
  2. ShiroFilter 委托给FilterChainResolver以获取FilterChain应为任何给定请求执行的内容。
  3. 默认情况下FilterChainResolverPathMatchingFilterChainResolver实现依次检查请求路径并使用该路径执行查找FilterChainManager
  4. 解析后的 FilterChain 返回,然后由 master 执行ShiroFilter

您可以将任何FilterChainResolver您想要的插件插入到ShiroFilter. 您可以使用默认值FilterChainResolver并将其委托给您的自定义FilterChainManager实例,或者您可以根据需要实现其中一个(或两个)接口。

于 2013-01-23T18:51:37.730 回答