美文网首页
Spring Security Authentication

Spring Security Authentication

作者: 司鑫 | 来源:发表于2018-09-24 20:15 被阅读20次

    认证授权原理


    Spring Security核心就是一系列的过滤器链,当一个请求来的时候,首先要通过filer chains 的校验,每种校验方式 Spring security 都提供了对应的 filter,校验通过之后才会访问用户各种信息。

    发送一个 request 时:

    1. 进入到 UsernamePasswordAuthenticationFilter 这个 filter 中,判断是否时表单认证,如果是则会进行校验,并做相应的标志
    2. 进入到 basicAuthenticationFilter 这个 filter 中,判断是否是 basic 的认证方式,如果是则会进行校验并做相应的标志
    3. 经过一系列其他的 filter ,比如 authorization ...
    4. 进入到 FilterSecurityInterceptor 这个 filter,校验用户是否有认证成功/认证成功后是否有相应的权限,如果没有则会进入到 ExceptionTranslationFilter 中转换成相应的 exception 并返回;如果校验成功,则会访问 request

    自定义认证逻辑


    用户信息获取及校验逻辑
    1. 自定义获取用户的逻辑,实现 UserDetailsService 接口,并实现 loadUserByUsername 接口;
    @Component
    public class CustomUserDetailsService implements UserDetailsService {
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            UserInfo userInfo = new UserInfo();// 可以从数据库中根据 username 获取用户信息以及对应的权限
            return userInfo;
        }
    }
    
    1. 其中需要返回一个UserDetails 的实例,我们可以直接返回一个 Spring security 提供好的一个实例org.springframework.security.core.userdetails.User, 也可以实现 UserDetails 接口自定义一个UserDetails实例。
    public class UserInfo implements UserDetails{
    
        private Long id;
    
        private String name;
    
        private String username;
    
        private String password;
    
        private String email;
    
        private boolean isAccountNonExpired = true;
    
        private boolean isAccountNonLocked = true;
    
        private boolean isCredentialsNonExpired = true;
    
        private boolean isEnabled = true;
    }
    
    处理密码加密逻辑

    Spring Security 提供了几种默认的加密方法,比如:MD5,盐... ,我们也可以通过实现PasswordEncoder接口并实现 encodematches 方法来自定义一个加密方式。

    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Bean
        public PasswordEncoder passwordEncoder(){
            return new BCryptPasswordEncoder();
        }
    ...
    }
    

    相关文章

      网友评论

          本文标题:Spring Security Authentication

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