Olá.
Estou tentando utilizar Interceptors do Struts 2 (versão 2.0.14, usando annotations) para segurança do sistema. Ou seja, toda requisição deve passar por este interceptor onde será verificado se o usuario está logado e se tem permissão para excutar tal funcionalidade.
No entanto, está passando somente pelo método init do Inteceptor criado. Preciso passar pelo método intercept.
Não sei onde estou esquecendo de configurar para que todas as actions chamen o método intercept de AutorizacaoInterceptor. Poderiam ajudar?
Abaixo seguem os arquivos que estou utilizando.
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<constant name="struts.locale" value="pt_BR" />
<constant name="struts.multipart.maxSize" value="2597152" />
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="autorizacao" class="AutorizacaoInterceptor" />
<interceptor-stack name="demostack">
<interceptor-ref name="autorizacao" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="demostack" />
</package>
</struts>
AutorizacaoInterceptor.java
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.views.tiles.TilesResult;
import br.com.empresa.sistema.modelo.entity.Usuario;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
@Results({
@Result(name="input", value="login.page" ,type=TilesResult.class)
})
public class AutorizacaoInterceptor extends AbstractInterceptor
{
private static final long serialVersionUID = 4194206894614545639L;
public void init()
{
System.out.println("Estamos no metodo init do Interceptor");
}
public String intercept(ActionInvocation invocation) throws Exception
{
SessionMap sessao = (SessionMap) ActionContext.getContext().get(ActionContext.SESSION);
Usuario usuarioAutenticado = (Usuario) sessao.get("usuarioAutenticado");
if(usuarioAutenticado != null)
{
System.out.println("Usuario autenticado");
}
else
{
System.out.println("Usuario não autenticado");
sessao.invalidate();
return Action.INPUT;
}
return invocation.invoke();
}
public void destroy() {}
}