Как выполнить метод перед выполнением какого-либо действия (проверьте, вошел ли пользователь в систему) Struts 2
Я хочу проверить, вошел ли пользователь (сеанс) в систему, поэтому, если пользователь попытался получить доступ к ресурсу (ссылке), и он не подключен, он должен быть перенаправлен на страницу входа в систему.
//when logging in
sessionMap.put("logined",true);
затем
public String checkLogin() {
//when trying to reach a resource
if ((Boolean) sessionMap.get("logined")) return "Logined";
else return "notLogined";
}
но я должен выполнять этот метод в каждом методе-действии в групповом действии, и я должен обрабатывать результат в каждом действии на struts.xml
Итак, мой вопрос, если есть "легкое" решение с использованием SessionAware
и sessionMap:
private SessionMap<String,Object> sessionMap;
Я скорее не использую Spring Security.
1 ответ
Вы можете выполнить свой метод в prepare()
, Чтобы использовать эту функцию, ваш класс действий должен реализовать Preparable
интерфейс. Предполагается, что действия настроены на использование defaultStack
перехватчиков, которые включают эту функцию.
Подготовить перехватчик:
Этот перехватчик звонков
prepare()
на действия, которые реализуютPreparable
, Этот перехватчик очень полезен в любой ситуации, когда вам нужно убедиться, что какая-то логика работает до того, как будет запущен фактический метод execute.
Если ваша логика выходит за рамки класса действия, подумайте об использовании пользовательского перехватчика для аутентификации. Вот пример аутентификации перехватчика.