gpt4 book ai didi

java - 如何在 spring boot 中处理 @secured 的异常

转载 作者:行者123 更新时间:2023-12-02 04:44:27 25 4
gpt4 key购买 nike

出于安全原因,我在我的 spring boot 应用程序中使用了@secured。当我尝试以不同的角色访问它时,它给了我异常(exception)。我能理解这一点。但是我怎样才能对我的前端给出正确的响应而不是内部服务器错误。这是我的 Controller

@Secured("ROLE_ADMIN")
@RequestMapping(value = "/user", method = RequestMethod.POST)
public Map<String, Object> saveUser(@RequestBody User user) {
log.debug("in admin save user controller");
userService.saveUser(user);
return ResponseHandler.generateResponse(
configProp.getProperty("moderator.created"), HttpStatus.OK,
true, null);
}

这是我的异常(exception)来了。请帮助我是新手。

org.springframework.security.access.AccessDeniedException: Access is denied

最佳答案

您应该将 @Secured 注释放在服务方法级别,然后在返回正确响应的 Controller 中捕获它。

类似的东西:

UserService.java

@Secured("ROLE_ADMIN")
public void saveUser(User user) {
userRepository.save(user);
}

UserController.java

@RequestMapping(value = "/user", method = RequestMethod.POST)
public Map<String, Object> saveUser(@RequestBody User user) {
log.debug("in admin save user controller");

try {
userService.saveUser(user);
return ResponseHandler.generateResponse(
configProp.getProperty("moderator.created"), HttpStatus.OK,
true, null);
} catch(AccessDeniedException e) {
log.warn("Unauthorized", e);
return new ResponseEntity<Object>(configProp.getProperty("error.forbidden"),
HttpStatus.SC_UNAUTHORIZED);
}
}

关于java - 如何在 spring boot 中处理 @secured 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34394233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com