Struts2 自动登录的拦截器

来源:互联网 发布:君君的淘宝店 编辑:程序博客网 时间:2024/06/05 00:26
package org.wiyi.bbs.Interceptor;import java.util.Map;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.wiyi.bbs.model.User;import org.wiyi.bbs.service.UserService;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class AutoLoginInterceptor implements Interceptor{private static final long serialVersionUID = -3622290057856883830L;@Overridepublic void destroy() {}@Overridepublic void init() {System.out.println("拦截到http请求") ;}@Overridepublic String intercept(ActionInvocation invocation) throws Exception {HttpServletRequest request = ServletActionContext.getRequest() ;Cookie[] cookies = request.getCookies() ;ActionContext atx = invocation.getInvocationContext() ;Map<String,Object> session = atx.getSession() ;if(session.get("user") == null) {System.out.println("----开始自动登录----") ;if(cookies != null) {for(Cookie cookie : cookies) {if(cookie.getName().equals("autoLogin"))  {String[] value = cookie.getValue().split("_") ;int userId = Integer.parseInt(value[0]) ;long expireTime = Long.parseLong(value[1]) ;UserService userService = getUserService() ;User user = userService.loadUser(userId) ;System.out.println(user) ;if(user.getAutoLoginKey().equals(cookie.getValue()) && expireTime > System.currentTimeMillis()) {session.put("user", user) ;}System.out.println("-----自动登录成功-----") ;break ;}}}}return invocation.invoke();}private UserService getUserService() {ApplicationContext atx = new ClassPathXmlApplicationContext("applicationContext.xml") ;UserService userService = (UserService) atx.getBean("userServiceImpl") ;return userService;}}

0 0
原创粉丝点击