Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于restapi的基于角色的spring安全性_Java_Spring_Rest_Spring Security - Fatal编程技术网

Java 基于restapi的基于角色的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()

我遵循这个代码库实现了spring安全性

在配置了安全性之后,我有了安全的资源,如

@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);
    }


}