2016-05-02 10 views
1

Я хочу проверить, вошел ли пользователь (сеанс) в , поэтому, если пользователь попытался найти ресурс (ссылка), и он не связан он должен быть перенаправлен на страницу входа в систему, я мог бы эту проверкуКак выполнить метод перед выполнением любого действия (проверьте, вошел ли пользователь в систему) 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"; 
} 

, но я должен выполнить этот метод в каждом методе-действия в классе действия и I должен обрабатывать результат в каждом действии на struts.xml

так, мой вопрос, если есть "свет" решение с использованием SessionAware и sessionMap:

private SessionMap<String,Object> sessionMap; 

я скорее 'не использовать' Spring Security.

+0

Google для «сервлет-фильтра» или просто прочитайте javadoc ServletFilter. –

+0

Перехватчики. И вы действительно должны использовать некоторые рамки безопасности. –

+0

Я сейчас работаю над фильтром сервлетов, как предложил Nizet, но можете ли вы предложить некоторые простые рамки безопасности? –

ответ

1

Вы можете выполнить свой метод в prepare(). Чтобы использовать эту функцию, ваш класс действия должен реализовать интерфейс Preparable. Предполагается, что действия настроены на использование defaultStack перехватчиков, которые включают эту функцию.

Prepare Interceptor:

Этот перехватчик вызывает prepare() на действия, которые реализуют Preparable. Этот перехватчик очень полезен для любой ситуации, когда вам нужно обеспечить выполнение некоторых логических операций до запуска фактического метода выполнения.


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

+0

принять ответ –