Spring Security 简介

Spring Security 过滤器链

Spring Security 简介_第1张图片
Spring Security过滤器链.jpeg

绿色的过滤器是我们能配置的,每一个绿色过滤器处理一种认证方法。完成请求之后会做一个请求完成的标记。

SecurityContextPersistenceFilter:请求进来,检查session,如果有SecurityContext拿出来放到线程里,如果没有就过去。请求出去,检查线程,如果有SecurityContext就拿出来放到session里。这样就能共享用户认证结果。

UsernamePasswordAuthenticationFilter:处理基于表单的。
BasicAuthenticationFilter:处理HTTP Basic的。
......

ExceptionTranslationFilter:接收异常,引导用户到最初的认证页面

FilterSecurityInterceptor:决定当前请求能不能通过,然后访问REST API,根据我们的配置判断通过不通过,不能通过的根据不能通过的的原因抛出不同的异常,由ExceptionTranslationFilter接收。

简单示例

用户名:默认user
密 码:Spring boot启动之后控制台上

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
//        http.httpBasic() // 最开始的默认登录方式
        http.formLogin()
                .and()
                .authorizeRequests() // 对请求做授权:下面的都是做授权的配置
                .anyRequest() // 任何请求
                .authenticated(); // 都需要身份认证
    }
}

禁用Spring Security

spring boot 1.x: 
security.basic.enabled=false


spring boot 2.x: 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
public class SpringSecurityLearningApplication {

   public static void main(String[] args) {
      SpringApplication.run(SpringSecurityLearningApplication.class, args);
   }

}

你可能感兴趣的:(Spring Security 简介)