您的位置:首页 > 编程语言 > Java开发

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
<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会在启动时,读取这两张表,并加载进缓存里面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐