欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-28 17:06:52
...

目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用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();
	}

 

 

 

相关标签: struts2拦截器