美文网首页
spring security 学习一

spring security 学习一

作者: 派大不是星 | 来源:发表于2018-07-18 17:58 被阅读0次

    security5 版本修改了以前默认的basic认证方式,把它改成了表单的认证方式。

    spring security的基本原理

    security我把它理解成一组过滤器链,用户可以根据不同的需求配置绿色的filter,如UsernamePasswordAuthenticationFilter用于表单登录的filter,BasicAuthenticationFilter用户http basic 认证的filter。剩下的多个filter用户是无法配置,也无法改变其顺序。

    FilterSecurityInterceptor是整个security过滤器链的最后一环,它决定你当前的请求是否经过了前面绿色filter的认证,通过了就可以访问后面rest服务,不能则抛出相关异常。

    ExceptionTranslationFilter用来处理FilterSecurityInterceptor抛出的异常,引导用户进行下一步处理。当然们security不仅仅只有这三种过滤器。

    自定义用户认证逻辑

    1.处理用户信息获取逻辑

    实现UserDetailsService接口,实现loadUserByUsername(String s) 方法。在方法中编写自己的业务逻辑

    public UserDetails loadUserByUsername(String s)throws UsernameNotFoundException {

        log.info("登录的用户名 " + s); 

        return new User(s,"1234", AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));

    }

    UserDetails 封装了security登录时候用到的所有信息,如权限,密码,用户名

    boolean isAccountNonExpired() 账户没有过期,boolean isCredentialsNonExpired() 密码是否过期。

    boolean isAccountNonLocked() 账户是否锁定(冻结),boolean isEnabled() 账户是否可用(删除)等信息

    2.处理加密解密

    security5中你必须给项目配置一个PasswordEncoder,否则会报 There is no PasswordEncoder mapped for the id "null"。

    如果你不想配置 可以添加,当然这个方法已经过期了,建议安全还是配置PasswordEncoder

    @Bean

    public static NoOpPasswordEncoder passwordEncoder() {

        return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();

    }

    实际开发中,密码不可能明文存在数据库中,这时要用到PasswordEncoder接口

    String encode(CharSequence var1)  这个方法是用来密码加密,这个方法是用户注册的时候我们调用,对密码进行加密,存库。

    boolean matches(CharSequence var1, String var2) 加密后的代码和用户传入的密码是否匹配

    @Override

    protected void configure(AuthenticationManagerBuilder auth)throws Exception {

        auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());

    }

    @Bean

    public PasswordEncoder passwordEncoder(){

        return new Md5PasswordEncoder();

    }

    推荐使用 BCryptPasswordEncoder(),好处即使 相同密码 加密后的字符串 也是不同的 。

    相关文章

      网友评论

          本文标题:spring security 学习一

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