Spring Security 3.1 集成 Hibernate 访问数据库用户配置指南
本文主要介绍如何配置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会自动进行身份验证和授权检查。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/bcaf8a8dbbb8471bab8fa3f512e0d6fe_weixin_42195978.jpg!1)
- 粉丝: 27
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)