SpringSecurity学习4
自定义数据库模型的认证授权
1.实现UserDetails
UserDetailsService仅定义一个方法loadUserByUsername(),用于获取一个UserDetails对象,UserDetails对象有一系列在验证时用到的信息,包括用户名,密码,权限以及其他信息,SpringSecurity会根据这些问题判断验证是否成功,

2,数据库准备
CREATE TABLE user (
Id int(11) NOT NULL AUTO_INCREMENT,
userName varchar(255) DEFAULT NULL COMMENT '姓名',
password varchar(255) DEFAULT NULL COMMENT '密码',
roles varchar(255) DEFAULT NULL,  PRIMARY KEY (Id)
)
ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户表';
INSERT INTO user VALUES ('1', 'xiao', 'bbd126f4856c57f68d4e30264da6a4e6', 'ROLE_ADMIN,ROLE_USER');
INSERT INTO user VALUES ('2', 'admin', 'bbd126f4856c57f68d4e30264da6a4e6', 'ROLE_ADMIN');
INSERT INTO user VALUES ('3', 'user', 'bbd126f4856c57f68d4e30264da6a4e6', 'ROLE_USER');
 实现UserDetails定义的的几个方法
isAccountExpired,isAccountNonlLocked,isCredentialsNonexpired暂且用不到,统一返回true,否则springsecurity会返回异常
3,数据持久层准备
导入依赖
配置文件

在启动类上加上 用@MapperScan指定Mybatis要扫描mybatis的映射文件,

编写映射接口

编写UserDetailsService

其中SimpleGrantedAuthority是GrantedAuthority的一个实现类,springsecurity的权限几乎使用SimpleGrantedAuthority生成的,只要注意每种角色对应一个GrantedAuthority即可,加上@Service
最后修改资源授权的配置的配置类SpringConfig继承WebSecurityConfigurerAdapter类,WebSecurityConfigurerAdapter类中定义了三个configure,参数HttpSecurity的是HttpSecurity对象的配置方法,WebSecurity参数的方法是用于web安全配置的,authenticationManagerBuilder的configure也可以用来配置认证用户的

至此我们就完成了自定义数据库结构认证
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号