The login in a struts page needs a proper interceptor to handle all possible cases of login... Have tried to make one that works :)
package com.interceptor;
import java.util.List;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.StrutsStatics;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.user.User_Info;
public class LoginInterceptor extends AbstractInterceptor implements StrutsStatics
{
private static final long serialVersionUID = 1L;
HttpSession session;
HttpServletRequest request;
HttpServletResponse response;
String t;
@Override
public String intercept(ActionInvocation actin) throws Exception
{
//System.out.println("call interceptor");
ActionContext ctx=actin.getInvocationContext();
request=(HttpServletRequest)ctx.get(HTTP_REQUEST) ;
response=(HttpServletResponse) ctx.get(HTTP_RESPONSE);
session = request.getSession (true);
Object user = session.getAttribute ("user");
if (user == null)
{
//System.out.println("inside near user=null");
String trylog = request.getParameter("user");
if (! StringUtils.isBlank (trylog) )
{
//System.out.println("try");
String usern=request.getParameter("user").toString();
String pass=request.getParameter("pass").toString();
SessionFactory sf=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
Session ses= sf.openSession();
//System.out.println("enter id");
User_Info u=new User_Info();
try
{
List l = ses.createQuery("select password from com.user.User_Info e where e.user_id="+"'"+usern+"'").list();
for(Object o:l)
{
t=(String) o;
}
}
catch (HibernateException e)
{
e.printStackTrace();
}
if(pass.equals(t.toString()))
{
//System.out.println("ho gaya");
session.setAttribute("user", usern);
//request.setAttribute("page", "dummy.jsp");//Following line of code is for a concern of a project for using a master page to include other pages by calling the page required to be included from session
return "success";
}
/*else
{
System.out.println("cookie");
Cookie c[]=request.getCookies();
if(c==null)
{
int counter = 1;
Cookie cnt = new Cookie("count",new Integer(counter).toString());
cnt.setMaxAge(65000);
System.out.println(cnt);
response.addCookie(cnt);
}
else
{
for(int i=0;i<c.length;i++)
{
if(c[i].getName().equals("count"))
{
int count = Integer.parseInt(c[i].getValue());
if(count<3)
{
count++;
//System.out.println("now="+count);
c[i].setValue(new Integer(count).toString());
response.addCookie(c[i]);
return "login";
}
else
{
count++;
c[i].setValue(new Integer(count).toString());
response.addCookie(c[i]);
return "change";
}
}
}
}
ses.close();
System.out.println(u);
}*/
return "login";
}
else
{
Object action = actin.getAction ();
if (action instanceof com.opensymphony.xwork2.ValidationAware)
{
((com.opensymphony.xwork2.ValidationAware) action).addActionError ("Username / password / code incorrect!");
}
}
return "login";
}
else
{
return actin.invoke();
}
}
}