Spring Security教程(二)

上一篇博客中,Spring Security教程(一),我把用户信息和权限信息放到了xml文件中,这是为了演示如何使用最小的配置就可以使用Spring Security,而实际开发中,用户信息和权限信息通常是被保存在数据库中的,为此Spring Security也提供了通过数据库获得用户权限信息的方式。本教程将讲解使用数据库管理用户权限。

一 引入相关的jar包

这个例子用的是mysql数据库和c3p0开源的jdbc连接池,在项目的pom.xml中引入jar包

    
    
    mysql
        mysql-connector-java
        5.1.21
    
    
        c3p0
        c3p0
        0.9.1.2
    

    
    mysql
        mysql-connector-java
        5.1.21
    
    
        c3p0
        c3p0
        0.9.1.2
    

二 定义数据源

在applicationContext.xml中定义c3p0的数据源,配置如下:


    
        
        

        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

因为本教程主要将spring security,数据源相关的配置就不在这里赘述了,请自行搜索。

三 修改配置文件

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


        
            
        
    

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



    
        
        
    
    
    
        
        

        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
    
    
        
            
        
    

四 在mysql数据库中新建表和插入数据

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权限。这和我们上一章中的配置相同,因此本章实例的效果也和上一节完全相同,这里就不再赘述了。

结果请参考教程一的结果

微信公众号关注:ByteZ,获取更多学习资料

你可能感兴趣的:(java)