2017-03-09 88 views
-1

我與春天的安全性是一個新手,我已經創建了一個基本的認證爲我的春天啓動的應用程序嘗試一下春季啓動基本身份驗證的用戶名未通過驗證

我創建MYGlobalAuthenticationConfigurerAdapter 這樣的:

​​

注意,我從性能加載用戶名和密碼文件,我驗證對值

和MyWebSecurityConfigurerAdapter這樣的:

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests().anyRequest().fullyAuthenticated().and(). 
    httpBasic().and(). 
    csrf().disable(); 
} 

帶有@EnableWebSecurity註釋。

我嘗試郵遞員使用用戶名和密碼,我每次更改用戶名的請求被確認,即使用戶名是不一樣的一個我把我的屬性文件

回答

1

這一次連接到我的網絡服務之一是因爲你在所有情況下都返回User對象而沒有用參數收到的對象進行檢查。試試下面的代碼:

@Value("${username}") 
    String username; 

    @Value("${password}") 
    String password; 

    @Override 
    public void init(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(userDetailsService()); 
    } 

    @Bean 
public UserDetailsService userDetailsService() { 
    return new UserDetailsService() { 

     @Override 
     public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException { 
      if(name.equals(username)){ 
       return new User(username, password, true, true, true, true, 
        AuthorityUtils.createAuthorityList("USER")); 
      }else{ 
       throw new UsernameNotFoundException("Could not find the user '" + name + "'"); 
      } 

     } 
    }; 
} 

UPDATE

用戶不會受到任何密碼進行驗證,但只有你在用戶創建使用內部lo​​adUserByUsername()方法的密碼。在這種方法中,你只能通過用戶名和返回來找到用戶,認證不在這裏完成,但認證是由Spring內部完成的,它與您在創建用戶(並返回)時通過的密碼相匹配請求。它還驗證用戶對您正在訪問的URL的角色,並且如果URL爲任何特定角色映射,則具有該角色的用戶將被授予訪問權限,對於任何其他角色,它將發送拒絕訪問的響應。 因此,它不會使用任何密碼對用戶進行身份驗證。

+0

你能看看我的問題請@md zahid raza? https://stackoverflow.com/questions/46065063/spring-boot-basic-authentication –