struts2自定义拦截器与cookie整合实现用户免重复登入

目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码

结构(两部份)=struts2.xml+自定义拦截器对象

配置文件

<!-- 自定义拦截栈与拦截器 -->  
<interceptors>  
    <interceptor name="visitInterceptor" class="cn.kjkj.web.ema.view.interceptor.VisitInterceptor" />  
    <interceptor name="cookieInterceptor" class="cn.kjkj.web.ema.view.interceptor.CookieInterceptor" />  
    <interceptor-stack name="MyStack">  
        <interceptor-ref name="cookieInterceptor" />  
        <interceptor-ref name="visitInterceptor" />  
        <interceptor-ref name="paramsPrepareParamsStack" />  
    </interceptor-stack>  
</interceptors>  
  
<!-- 设置默认拦截栈 -->  
<default-interceptor-ref name="MyStack" />  

  自定义拦截器具体实现

import java.util.List;
import java.util.Map;

import javax.servlet.http.Cookie;
import org.springframework.beans.factory.annotation.Autowired;

import cn.kjkj.web.ema.domain.User;
import cn.kjkj.web.ema.service.UserService;
import cn.kjkj.web.ema.view.action.BaseAction;
import cn.kjkj.web.ema.view.action.LoginAction;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**登入时间缓存拦截器
 * */
@SuppressWarnings("serial")
public class CookieInterceptor extends AbstractInterceptor  {
    @Autowired
    private UserService userService;
    
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
    /**登入拦截*/
        Object action=invocation.getAction();  
        Map<String, Object> session=invocation.getInvocationContext().getSession();
        Cookie [] cookies= BaseAction.getRequest().getCookies();
        //System.out.println(cookies!=null);
        String account=null;
        String  password=null;
        if(!(action instanceof LoginAction)){ //判断是否正在登入
            if(session.get("usermessage")!=null){
                return invocation.invoke();
            }else{
                if(cookies!=null){
                    
                for(Cookie c:cookies){
                    if(c.getName().equalsIgnoreCase("username")){
                    if(c!=null){
                        account=c.getValue();
                    }
                    }else if(c.getName().equalsIgnoreCase("password")){
                        if(c!=null){
                            password=c.getValue();
                        }
                    }
                }
                if(account!=null&&password!=null){
                    User u=new User(account, password);
                    List<User> list=userService.checkMessage(u);
                    if(list.size()==1){
                        session.put("usermessage", list.get(0));
                        return BaseAction.MAIN;
                    }
                    }
                }
            }
        }
        
        return invocation.invoke();
    }

 

posted @ 2015-11-20 14:19  匹夫鹏  阅读(474)  评论(0编辑  收藏  举报