Olá a todos!
Estou desenvolvendo uma aplicação que para acessar determinados links é necessário logar. Sem novidades até ai. Estou utilizando Struts2 + Tiles + Session + Interceptor.
Estou em dúvida pois o interceptor que criei ora bloqueia tudo hora libera tudo. Estou precisando de ajuda para resolver esse conflito e me indicarem se do modo que estou fazendo é o correto.
Segue o código:
<struts>
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
<interceptors>
<interceptor name="session" class="com.vaannila.action.SessionCheck" />
<interceptor-stack name="sessionExpirayStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="session"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="sessionExpirayStack" />
<action name="*Link" method="{1}" class="com.vaannila.action.LinkAction">
<interceptor-ref name="defaultStack" />
<result name="baseLayout" type="tiles">baseLayout</result>
<interceptor-ref name="session">
<param name="excludeMethods">baseLayout</param>
</interceptor-ref>
<result name="welcome" type="tiles">welcome</result>
<result name="friends" type="tiles">friends</result>
<result name="office" type="tiles">office</result>
</action>
<action name="Logar"
class="com.vaannila.action.LogarAction">
<result name="success" type="tiles">welcome</result>
<result name="error" type="tiles">erro</result>
</action>
</package>
</struts>
A classe interceptor:
public class SessionCheck implements Interceptor {
private static final long serialVersionUID = 1L;
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void init() {
// TODO Auto-generated method stub
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionProxy proxy;
proxy = invocation.getProxy();
Map<String, Object> session = ActionContext.getContext().getSession();
Map results = proxy.getConfig().getResults();
if (session.get("logined") != null) {
return invocation.invoke();
}
return null;
}
}
Obrigado!