Olá a todos,
Estou implementando um interceptor de login no struts 2, o problema é que, na hora da chamada da action não acontece a chamada do interceptor antes, já é chamada a action direto, sem passar pelo interceptor.
segue o código:
Struts.xml
<struts>
<!-- habilita o uso de outros métodos de action internamente na classe action
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
-->
<package name="actions" namespace="/actions" extends="struts-default">
<interceptors>
<interceptor name="loginInterceptor" class="br.com.rdcomp.interceptors.LoginInterceptor"></interceptor>
<interceptor-stack name="interceptors">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="paramsPrepareParamsStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="interceptors" />
<action name="Teste" class="br.com.rdcomp.actions.principal.Teste">
<result>/jsp/index.jsp</result>
</action>
</package>
<package name="login" namespace="/login" extends="struts-default">
<global-results>
<result name="startLogin">/login.jsp</result>
</global-results>
<action name="Login" class="br.com.rdcomp.actions.login.StartLogin">
<result>/login.jsp</result>
</action>
</package>
</struts>
do Interceptor:
public class LoginInterceptor implements Interceptor {
private static final long serialVersionUID = -8152162540645757675L;
public void destroy() {
// TODO Auto-generated method stub
}
public void init() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation invocation) throws Exception {
Map<String, UserVO> session = invocation.getInvocationContext().getSession();
if (session.containsKey("userVO")) {
UserFuncionality userFunc = new UserFuncionality();
// The user is logged but he dosen't have authorization to editing or visualize.
if (!userFunc.isUserAuthorization((UserVO) session.get("userVO"))) {
try {
throw new UserVisualizationAuthorizationException(
"Você não tem permissão para acessar essa tela.");
} catch (UserVisualizationAuthorizationException e) {
e.printStackTrace();
}
}
} else {
Map userParameters = ActionContext.getContext().getParameters();
// if the user don't write nothing
if (!userParameters.get("userVO.user").equals("") && !userParameters.get("userVO.password").equals("")) {
UserVO userVO = null;
userVO.setUser(userParameters.get("userVO.user").toString());
userVO.setPassword(userParameters.get("userVO.password").toString());
UserFuncionality userFunc = new UserFuncionality();
// if the user exists
if (userFunc.isUserExists(userVO)) {
userVO.setUserProfile(userFunc.getUserProfile(userVO));
invocation.getInvocationContext().getSession().put("userVO", userVO);
} else {
try {
throw new UserUnknownException("Usuario ou senha não existem, tente novamente.");
} catch (UserUnknownException e) {
e.printStackTrace();
}
}
}else{
return "startLogin";
}
}
return invocation.invoke();
}
}