我使用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领域的例子?
答案 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等)。