SpringSecurity启动器

Spring Security 启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

编写 SpringSecurityConfig 安全配置类

SpringSecurityConfig 安全控制配置类作为安全控制中心, 用于实现身份认证与授权配置功能:

  • SpringSecurityConfig必须继承抽象类WebSecurityConfigurerAdapter
  • 类上添加注解==@Configuration==(标识为配置类),和==@EnableWebSecurity==(启动SpringSecurity过滤器链功能)
  • 一般重写以下两个方法:
    • **configure(AuthenticationManagerBuilder auth)**身份认证管理器
      • 认证信息提供方式
      • 储存方式(内存、数据库)
    • **configure(HttpSecurity http)**资源权限配置(过滤链)
      • 拦截资源
      • 角色权限
      • 认证方式:httpBasichttpForm
      • 定制登陆页面、登陆请求地址、错误处理方式
      • 自定义SpringSecurity过滤器链等
基于内存存储认证
@Bean
public PasswordEncoder passwordEncoder() {
    // 明文+随机盐值加密存储
    return new BCryptPasswordEncoder();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    // 数据库存储的密码必须是加密后的,不然会报错:There is no PasswordEncoder mapped for the id "null"
    String password = passwordEncoder().encode("123456");
    logger.info("加密之后存储的密码:" + password);
    auth.inMemoryAuthentication().withUser("user1")
        .password(password).authorities("ADMIN");
}
HttpForm表单认证
@Override
protected void configure(HttpSecurity http) throws Exception {
    // 表单登录方式
    http.formLogin()
        // 登陆页面地址
        .loginPage("/login/page")
        // 表单提交地址
        .loginProcessingUrl("/login/form")
        // 用户名属性名称
        .usernameParameter("username")
        // 密码属性名称
        .passwordParameter("password")
        .and()
        .authorizeRequests() // 认证请求
        //登陆页面放行
        .antMatchers("/login/page").permitAll()
        //所有访问该应用的http请求都要通过身份认证才可以访问
        .anyRequest().authenticated()
        ; // 注意不要少了分号
}
静态资源放行
@Override
public void configure(WebSecurity web) {
    web.ignoring().antMatchers("/dist/**", "/modules/**", "/plugins/**");
}

SpringSecurity底层认证流程

SpringSecurity采用过滤器链实现认证与授权

请求过滤器链:

  • UsernamePasswordAuthenticationFilter:请求中包括用户和密码则进行认证,认证成功标记认证成功,否则进行下一个认证过滤器。

  • BasicAuthenticationFilter:请求头有basic开头的信息,base64解密后认证,认证成功标记认证成功,否则进入下一认证过滤器。

  • 其他认证过滤器

ExceptionTranslationFilter:捕获异常处理后续处理。

FilterSecurityInterceptor:认证通过后,根据资源权限配置来判断当前请求是否可以访问对应资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小钟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值