如何在Java Spring MVC中发出403错误



我在应用程序中编写了一个控制器,用于查找属于用户的项并返回它。但是,当请求包含不属于用户的项目的ID时,我的控制器将返回一个空对象。如何强制应用程序发出403错误呢?

下面是控制器的简化代码:
@Controller
@RequestMapping("/item")
public class ItemController {
@Autowired
private ItemService itemService;

@GetMapping(value="/getItem", produces = MediaType.TEXT_PLAIN_VALUE)
public String getItem(@RequestParam("itemId") int itemId,
HttpServletRequest request,
Model theModel) {

// get the username from the HTTP Request
Principal principal = request.getUserPrincipal();
String theUsername = principal.getName();

// create model attribute to bind form data
Item theItem = itemService.getItem(itemId);

if (theUsername.equals(theItem.getUserProfile().getUsername())) {
theModel.addAttribute("item", theItem);
} else {
theModel.addAttribute("item", new Item());
}

return "json/item";
}
}

注:请注意,ItemService只是一个中间层,它连接到数据层并获取数据返回。

注:我知道设计可能没有遵循最佳实践。请随意在评论中强调任何设计问题,但避免在帖子中对它们进行咆哮。

有两种方法。您可以像这样在控制器类方法中设置状态码

@ResponseStatus(HttpStatus.SC_FORBIDDEN)
public Response doSomething() { 
//do some thing here and return
}

如果这不符合你的要求,你可以像这样在一个异常处理程序方法中处理它。

@ResponseStatus(code = HttpStatus.SC_FORBIDDEN)
class CustomException extends RuntimeException {
//Handle something here;
}

查看

相关内容

  • 没有找到相关文章

最新更新