上面的一个例子,没有加入数据库支持,验证都是写在配置文件里的,显然,这不是大家想要的。
spring security让这点很方便了。
所要做的很简单
1.注释掉下面的内容
<!--用户名和密码在此处配置
<user-service>
<user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="user" password="user" authorities="ROLE_USER" />
user-service中定义了两个用户,admin和user。为了简便起见,我们使用明文定义了两个用户对应的密码,这只是为了当前演示的方便,之后的例子中我们会使用Spring Security提供的加密方式,避免用户密码被他人窃取。
最最重要的部分是authorities,这里定义了这个用户登陆之后将会拥有的权限,它与上面intercept-url中定义的权限内容一一对应。每个用户可以同时拥有多个权限,例子中的admin用户就拥有ROLE_ADMIN和ROLE_USER两种权限,这使得admin用户在登陆之后可以访问ROLE_ADMIN和ROLE_USER允许访问的所有资源。
与之对应的是,user用户就只拥有ROLE_USER权限,所以他只能访问ROLE_USER允许访问的资源,而不能访问ROLE_ADMIN允许访问的资源。
</user-service>
-->
2.加入数据库验证
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<beans:property name="url" value="jdbc:mysql://localhost:3306/spring"/>
<beans:property name="username" value="root"/>
<beans:property name="password" value="123456"/>
</beans:bean>
3.创建数据库
Spring Security默认情况下需要两张表,用户表和权限表。
create table users(
username VARCHAR(50) not null primary key,
password varchar(50) not null,
enabled boolean not null
);
create table authorities (
username varchar(50) not null,
authority varchar(50) not null,
constraint fk_authorities_users foreign key(username) references users(username)
);
create unique index ix_auth_username on authorities (username,authority);
users:用户表。包含username用户登录名,password登陆密码,enabled用户是否被禁用三个字段。
其中username用户登录名为主键。
authorities:权限表。包含username用户登录名,authorities对应权限两个字段。
其中username字段与users用户表的主键使用外键关联。
对authorities权限表的username和authority创建唯一索引,提高查询效率
Spring Security会在初始化时,从这两张表中获得用户信息和对应权限,将这些信息保存到缓存中。其中users表中的登录名和密码用来控制用户的登录,而权限表中的信息用来控制用户登陆后是否有权限访问受保护的系统资源。
我们在示例中预先初始化了一部分数据:
insert into users(username,password,enabled) values('admin','admin',true);
insert into users(username,password,enabled) values('user','user',true);
insert into authorities(username,authority) values('admin','ROLE_ADMIN');
insert into authorities(username,authority) values('admin','ROLE_USER');
insert into authorities(username,authority) values('user','ROLE_USER');
完成。
分享到:
相关推荐
在处理与数据库交互方面,Spring Security提供了更强大的支持,包括长期的remember-me功能和基于数据库的角色与用户管理API。 24.2. 目标 在原有应用中,用户信息和资源访问控制已经在数据库中管理。目标是将现有...
在本示例中,我们将探讨如何使用Spring Security为简单的Web应用程序添加安全功能。首先,让我们了解一下Spring Security的核心概念和主要组件。 1. **核心概念**: - **Authentication(身份验证)**:确认用户的...
- SpringSecurity支持从数据库中动态加载权限信息。DEMO中的数据库文件包含用户、角色和权限的关系表,如`users`, `authorities`, 和 `roles`。通过这些表,SpringSecurity可以获取用户的权限信息,实现动态权限...
这个简单的示例为初学者提供了一个了解Spring MVC和Spring Security交互的基础平台,有助于理解这两个框架在实际项目中的作用和集成方式。通过深入研究和实践,可以进一步提升Web应用的安全性和可维护性。
在"spring security用数据库的示例"中,我们将深入探讨如何配置Spring Security以使用数据库进行用户管理和权限控制。 首先,Spring Security的核心组件包括Authentication(认证)和Authorization(授权)。认证是...
**Spring Security 安全实例-数据库简单应用** 在软件开发中,系统安全是至关重要的一个环节,特别是对于企业级应用来说。Spring Security 是一个强大的安全框架,它为Java应用程序提供了全面的安全管理解决方案。...
spring security配置项目下载,里面前台使用了easyui。 我的项目是用maven搭建的,如果你配置了maven,那么就会可以很轻松的运行起项目来了, 步骤: 1、在我的项目下找到database文件夹,把里面的union_ssh.sql文件...
Spring Security支持基于表单的身份验证,也支持OAuth2和其他现代认证协议。 免登录功能,即Remember-Me服务,允许用户在一段时间内无须反复登录。这通过RememberMeServices接口实现,通常使用Token-Based策略,将...
本资源提供的"spring security3.07"教程和"contacts"示例源码,对于学习和理解Spring Security的内部工作原理及其在实际应用中的使用具有很高的价值。 首先,我们来看`tutorial`目录,这是Spring Security的教程...
在提供的压缩包文件"springsecurity_database"中,可能包含了示例代码、配置文件和其他相关资源,可以帮助你理解和实现上述功能。在实际项目中,你需要根据自己的需求调整和扩展这些示例,以构建一个符合业务场景的...
5. **Role-Based Access Control (RBAC)**:SpringSecurity支持基于角色的访问控制,通过将权限分配给角色,然后角色分配给用户,简化了权限管理。 6. **Expression-Based Access Control (ELBA)**:SpringSecurity...
描述中提到的博客链接(虽然具体内容无法在这里直接查看),通常会包含如何配置Spring Security以使用数据库进行权限管理的步骤和示例。在实际应用中,这通常涉及到以下关键知识点: 1. **数据库表设计**:在Spring...
总的来说,这个项目为学习者提供了一个实际的、完整的SpringBoot集成Spring Security的示例,通过它,你可以了解如何配置和使用Spring Security进行权限控制,同时掌握如何将数据库集成到Spring Boot应用中。...
在`SpringSecurity.md`和`SpringSecurity.pdf`文档中,可能包含SpringSecurity配置、自定义用户服务、授权策略等方面的代码示例。`codes`目录可能包含实际运行的项目代码,方便读者实践和理解。 8. **图笔记.draw...
10. **与其他Spring框架的集成**:Spring Security与Spring Boot、Spring MVC、Spring Data等其他Spring组件无缝集成,使得构建安全应用变得更加简单。 在Spring Security的官方文档中,包含了详细的配置指南、API...
在这个示例中,我们关注的是Spring Security 3版本,它在2010年发布,提供了许多安全特性,包括用户认证、权限控制、CSRF保护以及与Spring MVC的深度集成。 这个示例包含的jar包是Spring Security的核心组件,可能...
**Spring Security概述** Spring Security是Java领域中一个强大的安全框架,专为Web和企业应用程序提供安全解决方案。它提供了丰富的功能,包括用户认证、授权、访问控制、加密以及CSRF(跨站请求伪造)防护等,...
**Spring Security 示例项目** Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于Java的应用程序。这个示例项目旨在为初学者提供一个基础的起点,让他们了解如何在Spring应用中集成...
3. **定义安全规则**: 在Spring Security配置文件中定义具体的认证和授权规则,如使用数据库存储用户信息、使用自定义登录页面等。 #### 四、Spring Security 2.x 概览 Spring Security 2.x不仅提供了强大的功能...
在 `HelloSpringSecurity` 文件中,你可能看到以下关键代码: - **WebSecurityConfigurerAdapter** 类:这是 Spring Security 提供的配置适配器,可以覆盖其方法来定制安全规则。 - `configure(HttpSecurity http)...