绿色模块是可以通过配置更改的,蓝色和橘色部分是过滤器链上必定存在的,且顺序是不能变的。
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的信息,这时候就需要自定义登陆成功处理。