1,Spring Security介绍
在开发过程中,我们常常涉及用户权限登陆,用来验明身份和赋予指定权限,达到保护项目安全和项目访问效果等。基于此,Spring家族提供了Spring Security用于解决安全访问的框架,在Spring Boot中可以对其进行整合并且还提供了自动化配置
2,入门
Authentication(认证,确认用户是否登陆并进行管控)
Authorization(授权,指定用户有指定权限并对其管控)
3,MVC Security
WebSecurityConfigurerAdapter用来管理安全框架的配置,如果开发者想去自定义安全管理,需要实现这个这接口。自定义一个类,然后实现接口或者其他类。配置通常会被@Configration注解修饰。实现抽象方法、或者重写父类或者父接口中的部分方法。
4,自定义用户认证
WebSecurityConfigurerAdapter提供了5中用户自定义认证。使用configure(AuthenticationManagerBuilderauth)方法来完成用户的自定义认证
自定义用户认证方式分类见下: 内存身份认证·JDBC身份认证 身份详情服务认证0 LDAP身份认证(了解) 身份认证提供商
4.1自定义用户认证的管理
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**自定义用户认证的管理**/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
/**
*1.基于内存认证:
默认的登录页面:用户的登录信息,包含用户的名称、密码
**1.如何在内存中声明一组用户名车密码?
**2.将用户内存中的信息关联上AuthenticationManagerBuilder对象上
* **/
/**表示获取密码的编码器**/
//必须要指定,否则启动程序会报错
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
/**表示基于内存认知 inMemoryAuthentication() 用户密码必须加密 **/
auth.inMemoryAuthentication().passwordEncoder(encoder)
//设置用户名、设置按照指定密码器的初始化密码、设置了tom这个用户对应的角色(表示common目录下的的资源可以被访问)
.withUser("tom").password(encoder.encode("123456")).roles("common")
.and()//表示同时声明一组用户信息的初始化配置
.withUser("lzl").password(encoder.encode("123456")).roles("vip");
}