使用Apache Shiro为Spring Roo项目设置JDBC领域

时间:2011-12-04 18:12:08

标签: spring-roo shiro jdbcrealm

我使用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>

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

1 个答案:

答案 0 :(得分:3)

请参阅Shiro's Spring documentation以获取正确的web.xml配置。它与您展示的web.xml示例不同。

由于Spring的XML配置比Shiro的INI稍微强大,因此鼓励Spring用户使用完整的Spring配置而不是Shiro INI。请参阅“网络应用程序”和#39;该页面的一部分,以查看Shiro的Spring-only配置示例。

在&#39; applicationContext.xml&#39;该页面文档的一部分,您将看到

<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's source code来查看运行的默认SQL查询。

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

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