我遵循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}}
答案 0 :(得分:0)
默认情况下,Spring会将前缀ROLE_
应用于所有使用的角色。
如果您具有ADMIN
之类的自定义角色,则必须在@PreAuthorize
中使用ROLE_ADMIN