Как выполнить метод перед выполнением какого-либо действия (проверьте, вошел ли пользователь в систему) 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.


Если ваша логика выходит за рамки класса действия, подумайте об использовании пользовательского перехватчика для аутентификации. Вот пример аутентификации перехватчика.

Другие вопросы по тегам