【发布时间】:2019-12-10 10:37:33
【问题描述】:
我已经关注 blog 的 Spring Webflux 和 JWT 以构建具有身份验证和授权的基本 REST API。
第一步: 令牌生成 api 与我在JWT 中测试过的角色一起正常工作。
Step2:当我尝试访问任何未给出结果的 REST API 时,使用 Token,出现以下错误:
{
"timestamp": 1564685146747,
"path": "/api/user/getallusers",
"status": 500,
"error": "Internal Server Error",
"message": "No enum constant com.example.learn.constant.Role.USER",
"trace": "java.lang.IllegalArgumentException: No enum constant com.example.learn.constant.Role.USER\r\n\tat java.lang.Enum.valueOf(Unknown Source)\r\n\tat org.springframework.data.mongodb.core.convert.MappingMongoConverter.getPotentiallyConvertedSimpleRead(MappingMongoConverter.java:944)\r\n\tat
org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1495)\r\n\tat ...."
}
休息控制器是:
@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" }
}
【问题讨论】:
-
@dur 谢谢。现在我可以使用令牌访问其他授权资源。最初,我不理解错误。它在 db 中的作用与在 enum 声明中的作用相同。
标签: spring-boot spring-security spring-webflux