这篇主要的内容是:
自定义用户表和权限表
也是解决第三篇留下的问题,这个解决方案是在这个大哥的博客看到的http://downpour.iteye.com/blog/319965
下面就是我自己做的例子:
准备工作:
1.在数据库中 自定义我们的用户表 和 权限表.
-- 用户表 create table tb_users( id number primary key not null, c_username nvarchar2(50) not null, c_password nvarchar2(50) not null, c_enabled char(1) not null ); --权限表 create table tb_role( id number primary key not null, c_authority nvarchar2(50) not null ); --用户权限中间表 create table tb_user_role( id number primary key not null, c_user_id number not null, c_role_id number not null ); --添加相应的外键引用 和 索引 alter table tb_user_role add constraint fk_user_id foreign key (c_user_id) references tb_users(id); alter table tb_user_role add constraint fk_role_id foreign key(c_role_id) references tb_role(id); alter table tb_users add constraint uq_username unique(c_username); create unique index ix_user_role on tb_user_role (c_user_id,c_role_id); --插入测试数据. insert into tb_users values(1,'user','ee11cbb19052e40b07aac0ca060c23ee','1'); insert into tb_users values(2,'admin','21232f297a57a5a743894a0e4a801fc3','1'); insert into tb_users values(3,'zyk','a90157d9f9a8d683152ca521cf1ecfac','1'); select * from users insert into tb_role values(1,'ROLE_ADMIN'); insert into tb_role values(2,'ROLE_USER'); select * from tb_role insert into tb_user_role values(1,1,2); insert into tb_user_role values(2,2,1); insert into tb_user_role values(3,3,1); insert into tb_user_role values(4,3,2); select * from tb_user_role
上面的用户名 和 密码 都是一样的 例如用户名 user 对应的 密码是 user 经过MD5 处理出来后的字串
是ee11cbb19052e40b07aac0ca060c23ee 保存在数据库 出于安全性的考虑.
2.配置applicationCotext.xml
<!--配置认证管理器 --> <security:authentication-manager> <security:authentication-provider> <security:password-encoder hash="md5" /> <security:jdbc-user-service data-source-ref="dataSource" users-by-username-query="select u.c_username username,u.c_password password,u.c_enabled enabled from tb_users u where u.c_username=? " authorities-by-username-query="select u.c_username username,r.c_authority authority from tb_users u , tb_role r ,tb_user_role ur where u.id=ur.c_user_id and r.id=ur.c_role_id and u.c_username=?" /> <!-- <security:user-service> --> <!-- <security:user name="user" password="user" --> <!-- authorities="ROLE_USER" /> --> <!-- </security:user-service> --> </security:authentication-provider> </security:authentication-manager>
到此 使用 用户名 zyk 密码 zyk 进行登录成功 .测试Ok.
通过添加users-by-username-query 和authorities-by-username-query 属性,我们可
以使用你自己的SQL 覆盖默认的SQL 语句。这样我们就可以指定查询的是我们自己定义的表了
但是 我们必须确保我们的SQL 语句返回的列与Spring Security 所期待的一样
很显然的是 用户表 需要的 字段是 username , password,enabled .
权限表 则是 username ,authority
共同的是 他们都需要 username 作为where子句的限制条件.
相关推荐
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...
6. **Expression-Based Access Control (ELBA)**:SpringSecurity还提供了基于表达式的访问控制,允许用更灵活的方式定义访问规则,比如`hasRole('ROLE_ADMIN')`或`isAuthenticated()`。 在实际开发中,Spring...
spring security方面的学习资料,包含:Spring+Security+3+与+CAS单点登录配置;Spring+Security3中文教程;Spring-Security安全权限管理手册;Spring+Security文库;还有一个学习笔记!
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的...通过学习这些文档,开发者可以更好地理解Spring Security的工作原理,从而更有效地实现应用的安全控制。
Spring Security的学习过程可以分为入门、进阶和高级三个阶段。入门阶段主要是了解Spring Security的基本概念和配置方法。进阶阶段需要深入学习如何定制认证和授权流程、如何集成各种认证方式以及如何在实际项目中...
"springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...
首先,Spring_Security-3.0.1_中文官方文档(翻译版).pdf是学习SpringSecurity的重要资源,它包含详细的框架介绍、配置指南和使用示例。这份文档会帮助我们理解SpringSecurity的基础架构,如安全上下文、过滤器链和...
Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中...通过学习和实践这个项目,开发者能够深入理解Spring Security的工作原理,从而更有效地保护自己的Java应用。
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话...通过深入学习和实践,我们可以更好地掌握SpringSecurity,为我们的应用构建坚固的安全防线。
6. **记住我功能**:Spring Security支持“记住我”功能,允许用户在一段时间内无须重新登录。这通过在客户端存储一个长期有效的令牌来实现。 7. **OAuth2整合**:Spring Security可以与OAuth2框架集成,支持第三方...
6. **Web安全(Web Security)**:对于基于Servlet的应用,Spring Security通过Servlet Filter进行安全控制;对于响应式(Reactive)应用,它提供了WebFlux安全支持,利用Reactor库处理非阻塞的HTTP请求。 7. **API...
在IT安全领域,Apache Shiro和Spring Security是两个非常重要的框架,它们主要用于应用程序的安全管理,包括身份验证、授权、会话管理和加密等。本学习文档集合了这两个框架的相关知识,旨在帮助开发者深入理解和...
- `spring-security-core-4.0.0.CI-SNAPSHOT-sources.jar`:提供源代码,便于深入学习和调试。 - `spring-security-core-4.0.0.CI-SNAPSHOT.jar`:核心模块的主要库,包括安全性元数据、认证、授权和访问决策管理...
《Spring Security 3.1 学习指南及资源解析》 Spring Security是Java平台上的一款强大且高度可定制的安全框架,广泛应用于企业级Web应用的安全管理。本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心...
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,专为Java应用程序设计。它在Spring生态系统中...通过阅读提供的`spring_security_3.1.pdf`文档,你可以更深入地学习这个框架的细节和实践应用。