Правильная обработка ограничений доступа к веб-странице Spring - PullRequest
0 голосов
/ 28 апреля 2020

Добрый день.

Я новичок в веб-программировании, поэтому я хотел бы учиться у более опытных людей. Проект занимается весенней загрузкой. УСЛОВИЯ, например, - мой метод контроллера:

  1. , который доступен для обеих ролей (УЧИТЕЛЬ и СТУДЕНТ)
  2. Я хочу дать доступ только учителю, который является ведущим в проекте
  3. , а также доступ к студентам, которые являются частью команды

Код моего контролера, например:

@PreAuthorize("hasAuthority('_2_TEACHER') or hasAuthority('_3_STUDENT')")
@GetMapping("/project/{projectId}/stage/{stageId}/team/{teamId}")
public String viewAnswerByProjectByStageByTeam(
        @AuthenticationPrincipal User user,
        @PathVariable("projectId") Project project,
        @PathVariable("stageId") Stage stage,
        @PathVariable("teamId") Team team,
        Model model) {
    if (!project.getProjectLead().equals(user) || !team.getTeamUsers().contains(user))
        return "redirect:/projects";
    boolean isProjectLead = isProjectLead(user, project);
    boolean isTeamCaptain = isTeamCaptain(user, team);
    Answer answerByStageAnswerStageIdAndTeamAnswerTeamId = answerService.findAnswerByAnswerStageStageIdAndAnswerTeamTeamId(stage.getStageId(), team.getTeamId());
    model.addAttribute("project", project);
    model.addAttribute("stage", stage);
    model.addAttribute("team", team);
    model.addAttribute("answer", answerByStageAnswerStageIdAndTeamAnswerTeamId);
    model.addAttribute("isProjectLead", isProjectLead);
    model.addAttribute("isTeamCaptain", isTeamCaptain);
    return "answer";
}

Что делать, если пользователь не должен иметь доступ к указанной c странице ??

  1. перенаправлению, например, на главную страницу
  2. сгенерировать исключение, например 403 ошибки

сейчас Я реализовал перенаправление, потому что не знаю, как вызвать исключение для приложения classi c (не REST).

Буду благодарен за ответы и ссылки о том, как правильно обработать это исключение.

...