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");
    }
    
  • 相关阅读:
    P1383 高级打字机
    P1383 高级打字机
    P3723 [AH2017/HNOI2017]礼物 [FFT]
    P3723 [AH2017/HNOI2017]礼物 [FFT]
    P3338 [ZJOI2014]力 [FFT]
    P3338 [ZJOI2014]力 [FFT]
    P2597 [ZJOI2012]灾难
    c语言推箱子 扫雷项目
    蓝桥杯c语言基础题
    c语言的图形库
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/6794409.html
Copyright © 2011-2022 走看看