2017-03-09 60 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 –