Проверьте значение сеанса до объявления контроллера - PullRequest
0 голосов
/ 22 апреля 2019

Есть ли в Spring способ проверить, установлена ​​ли переменная сеанса и имеет ли она определенное значение перед доступом к контроллеру?

Точка, ограничивающая доступ ко всему контроллеру, если не установлена ​​конкретная переменная сеанса.

Жирной и курсивной строки кода не существует, это просто то, что я придумал, чтобы объяснить свои мысли.

Пример кода для объяснения:

@Controller
***@SessionCheckValue(session.getAttribute("value")=="true" else redirect_to_some_page)***
public class MainController {

  public String index() {
    return "index";
  }


}

1 Ответ

0 голосов
/ 22 апреля 2019

Используя Spring Security , вы можете добавить аннотацию @PreAuthorize к классу контроллера *, в котором выполняется логика, например:

@PreAuthorize("@someBean.isUserVerified()")
// or
@PreAuthorize("#{T(com.package.someClass).someStaticAuthenticationMethod()}")

Или вы можете написать свой собственныйСовет АОП с использованием AspectJ.Если вы не против размещения аннотаций на уровне методов, а не на уровне класса, Spring AOP также является опцией.Хотя я буду осторожен при написании вашей собственной реализации security .

Кроме того, Spring поддерживает как безопасность методов (как описано выше), так и веб-безопасность.В веб-безопасности аутентификация + авторизация выполняется на конечных точках HTTP (S), а не на классе / методе.Сравнение можно найти здесь .

* Примечание: Spring рекомендует добавить защиту класса / метода на уровне службы, а не на уровне контроллера, поскольку несколько контроллеров могут ссылаться на одну и ту же службу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...