spring security

Posted cherishDouble

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring security相关的知识,希望对你有一定的参考价值。


绿色模块是可以通过配置更改的,蓝色和橘色部分是过滤器链上必定存在的,且顺序是不能变的。

 http.formLogin()
            .loginPage("/imooc-signIn.html")  //指定登录页面所在的路径(If no login URL is specified,The "/login" for the login page.)
            .loginProcessingUrl("/authentication/form")//让UsernamePasswordAuthenticationFilter(若不指定login的url,默认处理的是/login的POST请求)拦截指定的url
            .and()
            .authorizeRequests()  //对请求做一个授权,这句话的意思是下面都是授权的配置
            .antMatchers("/imooc-signIn.html").permitAll() //对指定的请求允许放行
            .anyRequest()   //任何请求 
            .authenticated() //都需要身份验证
            .and()
            .csrf().disable(); //spring security默认进行了跨站保护

如何处理用户信息获取逻辑

spring security中接口UserDetailsService  用于获取用户信息:

public interface UserDetailsService {
    UserDetails loadUserByUsername(String var1) throws UsernameNotFoundException;
}

用户信息被封装到UserDetails的一个实现类中,spring security拿到这个用户信息就会去进行处理和校验,如果通过,这个用户被放到session中。

处理用户检验逻辑

UserDetails

处理密码加密解密

PasswordEncoder

补充:

 spring security默认登陆成功处理是跳回到user请求上;
 现在大部分前端是单页面处理,非同步刷新,而是异步操作,前端就需要登录成功处理拿到一个user的信息,这时候就需要自定义登陆成功处理。

以上是关于spring security的主要内容,如果未能解决你的问题,请参考以下文章

oauth2 spring-security 如果您在请求令牌或代码之前登录

Spring Security问题

Spring Security:如何获取自动渲染的登录页面代码?

springboot集成spring security实现restful风格的登录认证 附代码

spring security 匿名访问安全吗

如何使用 Spring Security @Secured 注解测试 Spring Boot @WebFluxTest