0

我使用 Eclipse 链接为我的 JPA 持久层设置了一个 Spring-Roo 项目,并且我创建了(用户角色、用户)表来管理我的安全性。我想知道是否有人用 Spring 项目设置了一个领域来配置 Apache Shiro,以便它使用数据库表来查找用户名和密码并保存用户名和密码?

目前我有一个 Shiro.ini 文件与一些测试角色和(用户名、密码)组合一起使用,但我试图弄清楚如何使用正确的过滤器来配置我的 web.xml 文件。下面是我的 web.xml 文件和当前的过滤器集。

<filter>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
 <!-- all declarations in shiro.ini file -->
<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
</filter>


<filter-mapping>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ShiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

有没有人有一个使用(Postgres)和 Apache Shiro 和 Spring 的 JDBC 领域的例子?

4

1 回答 1

3

有关正确的 web.xml 配置,请参阅Shiro 的 Spring 文档。它与您展示的 web.xml 示例不同。

因为 Spring 的 XML 配置比 Shiro 的 INI 稍微强大一些,所以鼓励 Spring 用户使用完整的 Spring 配置而不是 Shiro INI。请参阅该页面的“Web 应用程序”部分,以查看 Shiro 的仅 Spring 配置示例。

在该页面文档的“applicationContext.xml”部分中,您会看到一个

<bean id="myRealm" class="...">
...
</bean>

xml 配置的一部分。将其替换为您的 JdbcRealm bean 定义。您可以按预期注入 Spring 配置的数据源:

<bean id="myRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
    <property name="dataSource" ref="springConfiguredDataSource"/>
    ...
</bean>  

您可以通过查看JdbcRealm 的源代码来查看运行的默认 SQL 查询。

您可以根据需要配置这些查询。

请注意,如果您的数据模型足够复杂以至于 JdbcRealm 不足以满足您的需求,则可以轻松扩展 Shiro 的AuthorizingRealm并使用您喜欢的任何数据源 API(JPA、Hibernate 等)执行用户/角色/权限查找。 )。

于 2011-12-04T19:06:56.723 回答