Hi all,
I try to insert my "AuthentificatedInterceptor" in the stack, but now
nothing works.
First, I had a login page, with login/password fields, and the LoginAction
getted well the parameters' value.
Now, with my new Interceptor, the LoginAction gets empty values from my
login and password fields.
What's wrong ? I tried a lot of order's combinations in the stack, but I
did'nt find the good one.
My login.jsp :
<s:form action="login" validate="true">
<table border="0" cellspacing="0" cellpadding="0"
align="center" width="400">
<s:hidden name="user.loginAttempt" value="%{'1'}" />
<s:actionerror/>
<s:textfield label="%{getText('login.login ')}"
name="user.login" size="20" maxlength="20" tabindex="1"/>
<s:password label="%{getText('login.pwd')}"
name="user.pwd" size="20" maxlength="20" tabindex="2"/>
<s:submit label="%{getText('login.submit')}"
method="login">
<s:param name="colspan" value="%{2}" />
<s:param name="align" value="%{'center'}" />
</s:submit>
</table>
</s:form>
My LoginAction.java :
public class LoginAction extends ActionSupport implements
ServletRequestAware {
private Logger log = Logger.getLogger(LoginAction.class);
private HttpServletRequest request;
private UserVO user;
private AuthentifyUserServiceInterface authentifyUserService;
public String login () {
String vTarget;
try {
// Call the Service layer for authentification.
if (authentifyUserService.authentifyUser(user)) {
setSessionAttribute(request, Constants.USER, user.getLogin
());
vTarget = SUCCESS;
} else {
addActionError(getText("errors.loginko"));
vTarget = INPUT;
}
}
catch (TechnicalException e) {
addActionError(getText("error.message"));
vTarget = ERROR;
}
return vTarget;
}
protected void setSessionAttribute(HttpServletRequest request, String
key, Object o) {
if(o != null) {
request.getSession().setAttribute(key, o);
}
}
public void setUser(UserVO user) {
this.user = user;
}
public void setAuthentifyUserService(
AuthentifyUserServiceInterface authentifyUserService) {
this.authentifyUserService = authentifyUserService;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
My LoginInterceptor.java :
public class LoginInterceptor extends AbstractInterceptor implements
StrutsStatics {
private static final String LOGIN_ATTEMPT = "user.loginAttempt ";
public String intercept (ActionInvocation invocation) throws Exception
{
final ActionContext context = invocation.getInvocationContext ();
HttpServletRequest request = (HttpServletRequest)
context.get(HTTP_REQUEST);
HttpSession session = request.getSession (true);
Object user = session.getAttribute(Constants.USER);
if (user == null) {
String loginAttempt = request.getParameter (LOGIN_ATTEMPT);
if (! StringUtils.isBlank (loginAttempt) ) {
return invocation.invoke ();
}
return "notLogged";
} else {
return invocation.invoke();
}
}
}
My struts.xml :
<interceptors>
<interceptor name="login"
class="com.abw.util.LoginInterceptor" />
<interceptor-stack name="crmStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servlet-config" />
<interceptor-ref name="login" />
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare" />
<interceptor-ref name="chain" />
<interceptor-ref name="model-driven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox"/>
<interceptor-ref name="static-params" />
<interceptor-ref name="params" />
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation" />
<interceptor-ref name="workflow" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="crmStack"/>
The fact is that first I would like to have the hidden parameter in the
login.jsp being not an attribute in the userVO bean. But if I set
<s:hidden name="somethingOther" value="%{'1'}" />, I have a
ParametersInterceptor Exception saying "ParametersInterceptor -
[setParameters]: Unexpected Exception catched".
Then, How could I have my values in my LoginAction ? I would like to do
the authentifyUserService.authentifyUser() in the Action, not in the
Interceptor. And I suppose this will allow me to have my values in my
others forms too.
Thanks for your help.
Regards,
Michaƫl.