【Spring Security实战系列】Spring Security实战(二)

Spring Security实战(一),我把用户信息和权限信息放到了xml文件中,这是为了演示如何使用最小的配置就可以使用Spring Security,而实际开发中,用户信息和权限信息通常是被保存在数据库中的,为此Spring Security也提供了通过数据库获得用户权限信息的方式。本教程将讲解使用数据库管理用户权限。
一 引入相关的jar包
这个用的是mysql数据库和druid开源的jdbc连接池,在项目的pom.xml中引入jar包:
【Spring Security实战系列】Spring Security实战(二)_第1张图片
二 定义数据源
第一、新建datasource.properties配置文件:
mysql.database.driverName=com.mysql.jdbc.Driver
mysql.database.url=jdbc:mysql://127.0.0.1:3316/ssecurity?useUnicode=true&characterEncoding=utf8&useSSL=true&allowMultiQueries=true 
mysql.database.user=root
mysql.database.password=root
initialSize=50
minIdle=50
maxActive=8500
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1 FROM DUAL
#最大分配的对象数
default.max.total=1000
#最大能够保持idel状态的对象数
default.max.idle=200
#当池内没有返回对象时,最大等待时间 1s
default.max.wait=1000
#当调用borrow Object方法时,是否进行有效性检查
default.testonborrow=true
#当调用return Object方法时,是否进行有效性检查
default.testonreturn=true
第二、新建一个applicationContext-dataSource.xml配置数据源,配置如下:



    
        
        
        
        
        

        
        
        
        
        
        


        
        
        
        
        
        
        
        

        
        
    
因为本实战主要将spring security,数据源相关的配置请自行搜索。
三新建applicationContext.xml文件配置,配置如下:


	
	
	
		
		
		
			
                classpath*:datasource.properties
            
		
	

	
    
	
四 修改applicationContext-security.xml配置文件
为了从数据库中获取用户权限信息,我们所需要的仅仅是修改配置文件中的authentication-provider部分。修改后如下:

    
        
            
        
    
配置文件到这部就算修改完毕了,最终配置文件如下:





    
    
    
    
    
    
    

    
    
    

    
        
        
        
        
    

    
    

    
    
        
            
        
    

sql数据库中新建表和插入数据

Spring Security默认情况下需要两张表,用户表和权限表。以下是mysql中的建表语句及插入数据语句:
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);  

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');  
上述sql中,我们创建了两个用户admin和user,其中admin拥有ROLE_ADMIN和ROLE_USER权限,而user只拥有ROLE_USER权限。这和我们上一章中的配置相同,因此本章实例的效果也和上一节完全相同,这里就不再赘述了。
结果请参考实战一的结果。

你可能感兴趣的:(spring,security)