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;
@Override
public void destroy() {
}
@Override
public void init() {
System.out.println("拦截到http请求") ;
}
@Override
public 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;
}
}
Struts2 自动登录的拦截器
最新推荐文章于 2018-03-05 22:16:43 发布