Я использую небольшую персонализированную систему безопасности из-за характера приложения и пытаюсь реализовать несколько простых возвратов ошибок в моем контроллере REST API. Это достаточно просто сделать в html контроллере страницы, как у меня в следующем:
@Controller
public class HomeController {
@Autowired
private UserService userService;
@GetMapping("/home.html")
public String home(Model model) {
String redirect = "home";
if(!userService.getCurrentUser().isCanAccessService()) {
redirect = "unauthorized";
}
return redirect;
}
}
Я могу легко просто перенаправить его на неавторизованную страницу, которую я создал, так как я возвращаю строковое значение здесь , Однако, когда я go в REST API, это не так просто:
@RestController
public class bagelController {
@Autowired
private bagelService bagelService;
@Autowired
private UserService userService;
@GetMapping("/rest/bagel/search")
public Bagel searchBagel (@RequestParam(value = "bagel", required = false) String bagel,
@RequestParam(value = "bagelInd", required = false, defaultValue = "1") int bagelInd) {
Bagel bagel;
if(!userService.getCurrentUser().isBagelEditAccess()) {
bagel = null;
// I want to return a 401 or direct to my unathorized page if I get an invalid user here.
}
else {
bagel = bagelService.getbagel(bagel, bagelInd);
// if my bagel object returns null, I want to return a 404 or direct to a 404 not
found page here.
}
return bagel;
}