此网址http://localhost:8070/produits
与邮差工作fine.It返回此否认403:春季安全访问后得到
加入春季安全性之后,这个网址返回403次访问即使有正确的用户名和密码被拒绝。
SecurityConfig.java
import javax.sql.DataSource;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
/*auth.inMemoryAuthentication().withUser("admin").password("1234").roles("ADMIN","USER");
auth.inMemoryAuthentication().withUser("user").password("1234").roles("USER");*/
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery("select username as principal,password as credentials,active from users where username =?").
authoritiesByUsernameQuery("select username as principal,roles as role from users_roles where username =?")
.rolePrefix("ROLE_").passwordEncoder(new Md5PasswordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/produits").hasRole("USER");
}
}
REST式服务
@Autowired
private ProduitRepository produitRepository;
@RequestMapping(value="/produits",method=RequestMethod.GET)
public List<Produit> listProduits()
{
return produitRepository.findAll();
}
你试过'inMemoryAuthentication'吗?只要确定你的'auth'配置有问题。 – kamwo
或者更好地调试“JdbcDaoImpl.loadUserByUsername(String username)”以查找系统是否能够成功找到给定的用户 – Afridi
@Afridi我存储了使用MD5编码的密码 –