springsecurity-web權限方案-用戶認證(設置用戶名和密碼)


  第一種方式: 

   第二種方式:

   第三種方式:該方式是最實用的,畢竟用戶名和密碼是得查看數據庫才能判斷的,而不是預先設置好的。

   1.創建一個配置類

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
    }

    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder(){

        return new BCryptPasswordEncoder();
    }
}

  由於要使用UserDetailsService的實現類 來 自定義 我們自己的用戶名和密碼,因此需要調用AuthenticationManagerBuilder的userDetailsService()

  2.創建UserDetailsService的實現類並實現loadUserByUsername方法,loadUserByUsername的參數就是表單傳過來的用戶名

@Service
public class MyUserDatailService implements UserDetailsService {


    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

        List<GrantedAuthority> auths = AuthorityUtils.commaSeparatedStringToAuthorityList("role","ROLE_r1");

        return new User("lucy", new BCryptPasswordEncoder().encode("123"),auths);
    }
}

  上面返回的User對象是springsecurity提供的,他已經實現了UserDetails接口,用來封裝用戶名密碼等的,等我們自定義自己的密碼和用戶名后,就可以設置到里面;

  也特別說一下,AuthorityUtils.commaSeparatedStringToAuthorityList()這個方法是用來創建權限 和 角色的,比如說上面就創建了role權限和 r1角色,可以把他賦予給某個用戶,這樣用戶就具有某種權限和角色了。上面的權限和角色是可以隨便指定的,沒有固定的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM