zoukankan      html  css  js  c++  java
  • Spring Boot 集成 Spring Security 使用自定义的安全数据源

    编写一个类自定义实现 UserDetailsService 接口

    @Service("customUserDetailService")
    public class CustomUserDetailService implements UserDetailsService {
    
        @Autowired
        private UserRepository userRepository;
    
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    
            System.out.println("在 CustomUserDetailService 传入的 username => " + username);
    
            com.liwei.entity.User user = userRepository.findByUserName(username);
            List<GrantedAuthority> authorities = new ArrayList<>();
            authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
            User securityUser = new User(user.getUserName(), user.getPassword(), authorities);
            return securityUser;
        }
    }
    

    指定装配 UserDetailsService

    @Autowired
    @Qualifier("customUserDetailService")
    private UserDetailsService userDetailsService;
    

    配置 userDetailsService

    auth.userDetailsService(userDetailsService)

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService)
                .passwordEncoder(new PasswordEncoder() {
                    /**
                     * 这个方法的注释我不知道应该怎样写,含义是提供一个加密的算法?
                     *
                     * @param rawPassword
                     * @return
                     */
                    @Override
                    public String encode(CharSequence rawPassword) {
                        return encoder.encode(rawPassword.toString());
                    }
    
                    /**
                     * 提供一个匹配的算法
                     *
                     * @param rawPassword 用户输入的密码
                     * @param encodedPassword "数据库"中的密码,可以理解为安全数据源的密码
                     * @return
                     */
                    @Override
                    public boolean matches(CharSequence rawPassword, String encodedPassword) {
                        return encoder.matches(rawPassword, encodedPassword);
                    }
                });
                //.withUser("liwei").password("c019306df0757d86de9a14c1033fb80d84fa77f13edc4ff985dacac612043657a0246bd8e6b3ebab").roles("USER").and()
                //.withUser("zhouguang").password("2f4353cc3b8bc0fbde0a6aad1a438dec110c3362b33e0804e95e6f3368e80625fdd5dd2aacdcdf32").roles("USER", "ADMIN");
    }
    
  • 相关阅读:
    【做题】提高组过关测试题1
    【做题】arc078_f-Mole and Abandoned Mine——状压dp
    【学习】Hall’s Marriage Theorem
    【做题】arc072_f-Dam——维护下凸包
    一文尽览近似最近邻搜索中的哈希与量化方法
    InsightFace源码以及pre-train模型以及使用
    无法解析的外部符号 jpeg_std_error
    威布尔weibull distribution
    中科院- 生物特征识别概述
    Face-Resources
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/6794409.html
Copyright © 2011-2022 走看看