Java 基于restapi的基于角色的spring安全性
我遵循这个代码库实现了spring安全性 在配置了安全性之后,我有了安全的资源,如Java 基于restapi的基于角色的spring安全性,java,spring,rest,spring-security,Java,Spring,Rest,Spring Security,我遵循这个代码库实现了spring安全性 在配置了安全性之后,我有了安全的资源,如 @Override protected void configure(HttpSecurity httpSecurity) throws Exception { httpSecurity .csrf() .disable() .exceptionHandling()
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
.csrf()
.disable()
.exceptionHandling()
.authenticationEntryPoint(this.unauthorizedHandler)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("/auth/**").permitAll()
.anyRequest().authenticated();
// Custom JWT based authentication
httpSecurity
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
}
现在,我可以访问/auth
来生成令牌。然后我创建了一个像这样的资源
@RequestMapping(value = "/api", method = GET)
@PreAuthorize("hasRole('ADMIN')")
ResponseEntity<?> sayHello() {
return new ResponseEntity<>("Hello", OK);
}
但是,每当我尝试使用头中的X-Auth-Token
访问api
时(使用generate toke作为其值),我仍然会得到403
(禁止访问)。我错过了什么
注:我已经试过
hasRole('Admin')
到hasRole('ROLE\u Admin')
。。。它不起作用请将代码推送到GitHub好吗?更容易看出问题出在哪里。它已经在GitHub上了。我所做的唯一更改是在userdetailserviceinpl
中,我已经在我的问题中分享了这个示例对我来说很好,您的问题可能位于其他地方。
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = new User();
user.setId(1L);
user.setAuthorities(Roles.ADMIN.name());
user.setEmail("a@a.com");
user.setPassword(getEncryptedPass("admin"));
user.setUsername("hola");
return CerberusUserFactory.create(user);
}
private String getEncryptedPass(String admin) {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
return passwordEncoder.encode(admin);
}
}