Spring Security 3.1 集成 Hibernate 访问数据库用户配置指南
需积分: 0 75 浏览量
更新于2024-08-17
收藏 121KB PPT 举报
本文主要介绍如何配置Hibernate以访问数据库用户,并集成Spring Security 3.0在Spring MVC项目中实现安全控制。将详细讲解所需的步骤、关键配置和代码示例。
在Spring Security中,为了实现数据库认证,我们需要创建一个`UserDetails`的实现,即`User`对象。`Assembler`类是一个关键组件,它负责将数据库中的用户实体转换为Spring Security的`User`对象。`Assembler`类中的`buildUserFromUserEntity`方法用于构建`User`实例,其中`username`、`password`、`enabled`、`accountNonExpired`等属性需要根据数据库中的对应字段设置。
```java
@Service("assembler")
public class Assembler {
@Transactional(readOnly = true)
User buildUserFromUserEntity(com.tdrc.common.beans.User userEntity) {
String username = userEntity.getLogName();
String password = userEntity.getPassword();
boolean enabled = true; // 根据userEntity.isActive()设置
boolean accountNonExpired = true; // 根据userEntity.isActive()设置
// 其他属性如accountNonLocked、credentialsNonExpired等也需要相应设置
return new User(username, password, enabled, accountNonExpired, ..., new ArrayList<>());
}
}
```
接下来,我们需要集成Spring Security的jar包,包括`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`。这些jar包包含了Spring Security的核心功能和Web支持。
在`web.xml`中配置Spring Security的过滤器`springSecurityFilterChain`,确保所有请求都会经过这个过滤器进行安全检查:
```xml
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
为了便于调试和理解Spring Security的运行过程,可以调整`log4j.properties`,开启Spring Security的日志输出:
```properties
log4j.logger.org.springframework.security=DEBUG
```
最后,创建`security.xml`配置文件,定义Spring Security的规则和用户认证方式。例如,你可以配置数据库认证的`userDetailsService`,并设置权限控制:
```xml
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<http auto-config="true">
<!-- 配置URL拦截规则 -->
<intercept-url pattern="/admin/" access="ROLE_ADMIN" />
<form-login login-page="/login" default-target-url="/home" authentication-failure-url="/login?error=true" />
<logout logout-url="/logout" logout-success-url="/login" />
</http>
<authentication-manager>
<!-- 自定义UserDetailsService -->
<authentication-provider user-service-ref="customUserDetailsService">
<password-encoder hash="bcrypt"/>
</authentication-provider>
</authentication-manager>
<!-- 自定义UserDetailsService Bean -->
<beans:bean id="customUserDetailsService" class="com.yourpackage.CustomUserDetailsService">
<!-- 配置Assembler -->
<beans:property name="assembler" ref="assembler" />
</beans:bean>
</beans:beans>
```
在这个例子中,`CustomUserDetailsService`需要实现`UserDetailsService`接口,以便从数据库中加载用户信息。同时,`password-encoder`用于加密密码,这里使用了BCrypt算法。
通过以上步骤,我们就完成了Spring Security与Hibernate的整合,实现了基于数据库的用户认证。当用户尝试访问受保护的资源时,Spring Security会自动进行身份验证和授权检查。
2012-07-10 上传
2012-10-19 上传
362 浏览量
2021-07-07 上传
2021-05-30 上传
2018-12-31 上传
2021-10-01 上传
2013-08-12 上传
2011-11-14 上传
受尽冷风
- 粉丝: 30
- 资源: 2万+
最新资源
- AN1299_Source_Code_dsPIC33CK256MP508_MCLV_MCHV_PLL_ESTIMATOR.zip
- 算法问题:存储我解决的部分算法问题
- Examcookie-crx插件
- 篮球赛工作总结下载
- movie-frontend
- l love youc#版.zip
- 下周:App ECOLETA,下周火箭比赛
- 公益小站-crx插件
- java版sm4源码-alg-sm2-demo:SM2密码算法JAVA调用演示程序
- java se写的坦克游戏.zip
- 小学2013年工作总结
- upptime:Ne Neal Daringer的正常运行时间监视和状态页面,由@upptime提供支持
- local-stack-demo-service
- spring图书管理系统.zip
- ProCyclingStats:从ProCyclingStats网站下载车手统计信息
- Kaggle_Otto_Product_Classification:Kaggle Otto Group 产品分类