如何在Spring Webflux安全中使用自定义角色?

时间:2019-08-01 19:13:11

标签: spring-boot spring-security spring-webflux

我遵循blog的Spring Webflux和JWT来构建具有身份验证和授权的基本REST API。

第一步: 令牌生成api可以正常使用我在JWT中测试过的角色。

Step2:当我尝试访问任何未给出结果的REST API时,使用Token,出现以下错误:

 @RestController
    public class UserController {

        @Autowired
        private UsersRepository userRepository;


         // this api is not working 
        @RequestMapping(value = "/api/user/getallusers", method = RequestMethod.GET)
        @PreAuthorize("hasRole('ROLE_USER')")
        public Flux<Users> getAllUsers() {
                  System.out.println("COMINING"); // ok
            return userRepository.findOneByEmail("user1@learning.com");
        }


        // while this api is working
        @RequestMapping(value = "/api/user/users", method = RequestMethod.GET)
        @PreAuthorize("hasRole('ROLE_USER')")
        public Mono<ResponseEntity<?>> users() {

            return Mono.just(ResponseEntity.ok(new Message("data")));
        }
       // Response : { content:"data" }
    }

其他控制者是:

{{1}}

1 个答案:

答案 0 :(得分:0)

默认情况下,Spring会将前缀ROLE_应用于所有使用的角色。

如果您具有ADMIN之类的自定义角色,则必须在@PreAuthorize中使用ROLE_ADMIN