1

Мы используем struts2 StrutsPrepareAndExecuteFilter. Конфигурация в web.xml:struts2 StrutsPrepareAndExecuteFilter настройка

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class> 
     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    </filter-class> 
    <init-param> 
     <param-name>struts.devMode</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    </filter> 
    <filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

Нам необходимо реализовать аутентификацию/разрешение внутри этого общего перехватчика. Каким будет простой способ для этого? Можем ли мы создать настраиваемый перехватчик, который расширяет StrutsPrepareAndExecuteFilter и выполняет ли наша реализация внутри этого?

+0

Перехватчик в контексте S2 не является фильтром. –

ответ

1

Вы никогда не должны настраивать org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.

Даже если это не final, а не package protected, как в других рамках, расширение этого фильтра не требуется.

Вы должны изучить основы архитектуры Struts2. от Nutshell.

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

Итак, если вы хотите добавить некоторую функцию, такую ​​как аутентификация, вам следует сначала подумать о ее расширении через аутентификационный перехватчик. Этот перехватчик должен быть настроен для вызова каждого действия из входящих запросов. Посмотрите, как это делается в struts2 adding interceptors in struts.xml for all action class.

Последнее средство связи, которое вы можете использовать для написания пользовательского перехватчика для целей аутентификации. См. Is there a way to redirect to another action class without using on struts.xml