Spring3.0 MVC与Spring Security3.1整合教程

需积分: 0 1 下载量 55 浏览量 更新于2024-08-17 收藏 121KB PPT 举报
本文主要介绍如何在Spring 3.0 MVC项目中集成Spring Security 3.1,并配置JDBC访问数据库用户的相关步骤。 在Spring Security 3.1中,为了实现通过JDBC来访问和验证数据库中的用户信息,我们需要进行一系列的配置。首先,我们需要引入Spring Security的相关库,包括`spring-security-config-3.1.3.RELEASE.jar`、`spring-security-core-3.1.3.RELEASE.jar`、`spring-security-taglibs-3.1.3.RELEASE.jar`和`spring-security-web-3.1.3.RELEASE.jar`。这些库包含了Spring Security的核心功能和Web安全相关的支持。 接着,我们需要在`web.xml`中配置Spring Security的过滤器。添加一个名为`springSecurityFilterChain`的过滤器,并指定其类为`org.springframework.web.filter.DelegatingFilterProxy`。然后,为这个过滤器映射所有URL,以确保所有请求都会经过Spring Security的处理。如果不配置`filter-mapping`,Spring Security将不会启动,且不会有任何错误提示。 为了便于调试,可以调整`log4j.properties`,将Spring Security的日志级别设置为`DEBUG`,这样可以在控制台看到Spring Security执行的详细过程。 接下来,创建一个名为`security.xml`的配置文件,用于定义Spring Security的安全规则和行为。在这个文件中,我们需要定义一个`jdbc-user-service`,通过`data-source-ref`指定数据源`dataSource`,并提供两个查询语句: 1. `users-by-username-query`:这是一个SQL查询,用于根据用户名查找用户的登录名、密码和启用状态。在这个例子中,查询语句是`select logname,password,1 from users where logName=?`,其中`logname`对应用户名,`password`对应密码,而`1`通常代表用户已被启用。 2. `authorities-by-username-query`:此查询用于获取用户的权限信息,即角色和用户之间的关联。查询语句是`select b.logName username,rolename from users_roles a,users b,roles c where a.userId=b.userId and a.roleId=c.roleId and b.logName=?`,这会返回用户的登录名和与其关联的角色名称。 最后,在`authentication-manager`下,我们声明一个`authentication-provider`,并将其`user-service-ref`属性设置为之前定义的`jdbc-user-service1`。这样,Spring Security就知道了验证用户时应使用的数据源和服务。 集成Spring Security 3.1并配置JDBC访问数据库用户的过程主要包括:引入Spring Security库,配置`web.xml`中的过滤器,调整日志级别,以及在`security.xml`中设置用户服务和认证提供者。通过这样的配置,系统将能够根据数据库中的信息进行用户身份验证和权限管理。