spring security之使用数据库来读取用户
2018-03-17 23:30
267 查看
上一讲中我们是使用xml的形式配置了一个User-service,是直接在xml中配置了用户名,密码。而在实际开发中,我们会将用户信息保存在数据库里面,所以有必要让spring security从数据库中进行加载用户信息。
首先要在数据库里面加两张表,这个是spring security默认要使用的两张表
users表,用来保存用户名和密码以及是否禁用,spring security查询这张表来读取用户信息,username是主键,CREATE TABLE users( username VARCHAR(50) NOT NULL PRIMARY KEY, `password` VARCHAR(50) NOT NULL, enabled BOOLEAN NOT NULL );
authorities表,用来保存用户名和相应的权限,用户名指向users表的主键.CREATE TABLE authorities ( username VARCHAR(50) NOT NULL, authority VARCHAR(50) NOT NULL, CONSTRAINT fk_authorities_users FOREIGN KEY(username) REFERENCES users(username) );再为authorities添加唯一索引,加快查询效率CREATE UNIQUE INDEX ix_auth_username ON authorities (username,authority);然后在xml配置里面修改一下provider
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<beans:property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true"/>
<beans:property name="username" value="root"/>
<beans:property name="password" value="root"/>
</beans:bean>这样就完成了,spring security会在启动时,读取这两张表,并加载进缓存里面。
首先要在数据库里面加两张表,这个是spring security默认要使用的两张表
users表,用来保存用户名和密码以及是否禁用,spring security查询这张表来读取用户信息,username是主键,CREATE TABLE users( username VARCHAR(50) NOT NULL PRIMARY KEY, `password` VARCHAR(50) NOT NULL, enabled BOOLEAN NOT NULL );
authorities表,用来保存用户名和相应的权限,用户名指向users表的主键.CREATE TABLE authorities ( username VARCHAR(50) NOT NULL, authority VARCHAR(50) NOT NULL, CONSTRAINT fk_authorities_users FOREIGN KEY(username) REFERENCES users(username) );再为authorities添加唯一索引,加快查询效率CREATE UNIQUE INDEX ix_auth_username ON authorities (username,authority);然后在xml配置里面修改一下provider
<authentication-manager> <authentication-provider> <jdbc-user-service data-source-ref="datasource"/> </authentication-provider> </authentication-manager>然后添加一个datasource<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/test?useUnicode=true"/>
<beans:property name="username" value="root"/>
<beans:property name="password" value="root"/>
</beans:bean>这样就完成了,spring security会在启动时,读取这两张表,并加载进缓存里面。
相关文章推荐
- Spring Security教程(6)---- 使用数据库管理用户及权限
- Spring Security教程(6)---- 使用数据库管理用户及权限
- Spring Security进阶身份认证之使用数据库中的用户进行身份认证(附源码)
- Spring Security笔记:使用数据库进行用户认证(form login using database)
- Spring Security笔记:使用数据库进行用户认证(form login using database)
- Spring Security 使用数据库用户进行认证
- springboot集成spring security初探2--从数据库读取用户权限
- Spring Security教程(6)---- 使用数据库管理用户及权限
- Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园
- Spring Security教程(6)---- 使用数据库管理用户及权限
- Spring Security使用数据库中的用户进行身份认证
- 使用递归从数据库读取数据来动态建立菜单
- 使用asp.net2.0的Membership服务与自己写的用户数据库关联
- 3.JBoss如何配置从数据库里读取登录用户的验证信息
- 在ASP.NET AJAX中使用应用程序服务和本地化(4):示例程序:读取、修改并保存用户个性化信息
- 还原Wss3.0内容数据库时遇到:"ComputerName\Microsoft##SSEE 上的 WSS_Content 包含用户定义的架构。数据库在能够使用之前必须为空。请删除所有表、存储过程以及其他对象,或使用其他数据库。 " 的提示,无法加载内容数据库
- winform用户控件使用数据库dal层的问题
- 地磅称量系统之(37~39) 直接向数据库的数据表WtBill添加测试数据以及绑定用户控件和使用编码的方式控制dataGridView控件的每列属性和添加数据数据库的表中不存在的字段(非绑定列)
- ArcSDE空间数据库中SDE用户使用探讨
- 关闭SQL SERVER用户进程,防止因为用户正在使用数据库,导致数据库恢复或删除失败