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的信息,这时候就需要自定义登陆成功处理。
posted @ 2019-10-08 20:19  cherishDouble  阅读(145)  评论(0编辑  收藏  举报