美文网首页
1.security快速入门

1.security快速入门

作者: _少年不知愁 | 来源:发表于2020-09-16 19:36 被阅读0次

1.spring security简介

Spring Security 是基于 Spring 的身份认证(Authentication)和用户授权(Authorization)框架,提供了一
套 Web 应用安全性的完整解决方案。其中核心技术使用了 Servlet 过滤器、IOC 和 AOP 等

<!-- spring security 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.身份认证方式

2.1 httpBasic方式认证

内存存储认证信息

@Configuration
@Slf4j
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public UserDetailsService userDetailsService() {
        log.info("init userDetailsService============");
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(
            User.withDefaultPasswordEncoder().username("summit").password("password").roles("user")
                .build());
        return manager;
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        super.configure(web);
    }

    /**
     * 1.资源权限配置(过滤器链)
     *
     * @param http
     * @throws Exception
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().and()
            //认证请求
            .authorizeRequests()
            //所有认证进入应用的http请求都要进行认证
            .anyRequest().authenticated();
    }
}
security-basic.jpg

输入密码登陆成功

2.2 HttpForm 表单认证方式

        http
            /// 表单认证
            .formLogin()
             .and()
            //认证请求
            .authorizeRequests()
            //所有认证进入应用的http请求都要进行认证
            .anyRequest().authenticated();
login-from.jpg

2.3 底层实现

graph TB
UsernamePasswordAuthenticationFilter请求中包含用户名和密码,认证成功标记认证成功,否则进入下一个认证过滤器-->a("BasicAuthenticationFilter请求头有basic开头的信息,base64解码认证后")
a-->b("其它认证过滤器")
b-->c("ExceptionTranslationFilter捕获异常后处理")
c-->d("FilterSecurityInterceptor 认证通过后 根据资源权限配置来判断是否可以访问对应资源")
d-->controller
image.png

相关文章

网友评论

      本文标题:1.security快速入门

      本文链接:https://www.haomeiwen.com/subject/onmhyktx.html