当前位置: 代码迷 >> Web前端 >> 关于webwork session登陆应验
  详细解决方案

关于webwork session登陆应验

热度:213   发布时间:2012-11-09 10:18:47.0
关于webwork session登陆验证
我使用的webwork和spring.各个action在spring中使用scope="prototype"模式.

BaseAction如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.lang.*;
import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.ActionSupport;



public class BaseAction extends ActionSupport {
    protected transient final Log log = LogFactory.getLog(getClass());

    private String loginId="";    
 
       
    public String getLoginId() {
		return loginId;
	}


    
    protected boolean checkNoLogin(){
    	//getSession().setMaxInactiveInterval(1);
    	HttpSession session = getSession();
    loginId = (String)session.getAttribute("userSession");
    System.out.println("loginId:"+loginId);
    if(StringUtils.isBlank(loginId))
    {
    	return true;
    }
    return false;
    	
    }
    
	
	   /**
     * Convenience method to get the request
     * @return current request
     */
    protected HttpServletRequest getRequest() {
        return ServletActionContext.getRequest();  
    }
    
    /**
     * Convenience method to get the response
     * @return current response
     */
    protected HttpServletResponse getResponse() {
        return ServletActionContext.getResponse();
    }
    
    /**
     * Convenience method to get the session
     */
    protected HttpSession getSession() {
    	return getRequest().getSession();
    } 



loginAction.java如下:
	public String login() throws Exception {
		System.out.println("loginId:"+loginId);
		System.out.println("password:"+password);		
		if (loginDao.checkUserExists(loginId,password) == false) {
			addFieldError("loginIdNoExists", "用户名不存在!");
			return ERROR;
		} else if (loginDao.checkUserSuccess(loginId,password) == false) {
			addFieldError("passwordNoMatch", "用户密码错误!");
			return ERROR;
		} else {
			System.out.println("login success!");
			HttpSession session = getSession();
			session.setAttribute("userSession", loginId);
			
			System.out.println("成功登录!");
		}		
		return SUCCESS;
		}


但是登陆成功之后,在其他的模块Condition.java中


	public String condition() throws Exception {
		if(checkNoLogin())
			return "login";
		return SUCCESS;
    }

调用BaseAction的checkNoLogin方法,取得登陆成功之后保存在session中的userSession,为什么会是null呢?

请各位解答一下.或者有其他的方式来验证用户是否登陆成功的方式,谢谢!!!
1 楼 xugq035 2007-02-11  
用filter不行么?
  相关解决方案