📄 userlogininterceptor.java
字号:
package com.laoer.bbscs.web.interceptor;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.laoer.bbscs.service.config.SysConfig;
import com.laoer.bbscs.web.servlet.UserCookie;
import com.laoer.bbscs.web.servlet.UserSession;
import com.laoer.bbscs.service.*;
import com.laoer.bbscs.bean.*;
import com.laoer.bbscs.exception.*;
import com.laoer.bbscs.comm.*;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import org.apache.commons.logging.*;
import java.util.*;
public class UserLoginInterceptor extends AbstractInterceptor {
private static final Log logger = LogFactory.getLog(UserLoginInterceptor.class);
/**
*
*/
private static final long serialVersionUID = 6748629623401983281L;
@SuppressWarnings("unchecked")
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ac = invocation.getInvocationContext();
/*
* System.out.println(ac.getName()); Map map = ac.getParameters();
* System.out.println(map); Set ms = map.entrySet(); Iterator it =
* ms.iterator(); while (it.hasNext()) { Map.Entry e = (Map.Entry)
* it.next(); System.out.println(e.getKey());
* System.out.println(e.getValue()); }
*/
// ac.getValueStack().set("mytest", "Laoer");
// ac.getValueStack().set("interceptError", "error");
// if (true) {
// return "intercepthtml";
// }
HttpServletRequest request = (HttpServletRequest) ac.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) ac.get(ServletActionContext.HTTP_RESPONSE);
// logger.debug("request:"+request+" response:" + response);
// HttpServletResponse response = ServletActionContext.getResponse();
ServletContext servletContext = (ServletContext) ac.get(ServletActionContext.SERVLET_CONTEXT);
WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(servletContext);
if (wc == null) {
logger.error("ApplicationContext could not be found.");
} else {
SysConfig sysConfig = (SysConfig) wc.getBean("sysConfig");
// Cache userSessionCache = (Cache) wc.getBean("userSessionCache");
UserSession us = (UserSession) ac.getSession().get(Constant.USER_SESSION_KEY);
UserCookie uc = new UserCookie(request, response, sysConfig);
if (sysConfig.isUsePass()) {
if (uc.isLoginPass()) {// 通行证已登录
boolean isNewUser = false;
UserService userService = (UserService) wc.getBean("userService");
UserOnlineService userOnlineService = (UserOnlineService) wc.getBean("userOnlineService");
if (us == null) {// 用户没有在社区登录
UserInfo ui = userService.findUserInfoByUserName(uc.getPusername());
if (ui != null) {// 用户存在,做登录
ui.setLastLoginIP(ui.getLoginIP());
ui.setLastLoginTime(ui.getLoginTime());
ui.setLoginIP(request.getRemoteAddr());
ui.setLoginTime(new Date());
ui.setUserLocale(request.getLocale().toString());
long nowTime = System.currentTimeMillis();
UserOnline uo = new UserOnline();
uo.setAtPlace("");
uo.setBoardID(0);
uo.setNickName(ui.getNickName());
uo.setOnlineTime(nowTime);
uo.setUserGroupID(ui.getGroupID());
uo.setUserID(ui.getId());
uo.setUserName(ui.getUserName());
uo.setValidateCode(ui.getId() + "_" + nowTime);
if (ui.getHiddenLogin() == 1) { // 用户隐身登录
uo.setHiddenUser(1);
}
try {
ui = userService.saveAtLogin(ui); // 用户登录处理
uo = userOnlineService.createUserOnline(uo); // 加入在线用户表
us = userService.getUserSession(ui);
us.setLastActiveTime(nowTime);
us.setValidateCode(uo.getValidateCode());
ac.getSession().put(Constant.USER_SESSION_KEY, us);
// UserSession us =
// userService.getUserSession(ui);
// userSessionCache.add(ui.getUserName(), us);
uc.addCookies(ui);
} catch (BbscsException ex) {
logger.error(ex);
}
} else { // 用户不存在,是新用户
isNewUser = true;
}
} else {// 用户已经在社区登录
if (!us.getUserName().equals(uc.getPusername())) {// 用户在社区中的登录名和通行证中的用户名不一致
// if (!uc.getUserName().equals(uc.getPusername()))
// {// 用户在社区中的登录名和通行证中的用户名不一致
UserInfo ui = userService.findUserInfoByUserName(uc.getPusername());
if (ui != null) { // 用户存在,重新登录
uc.removeAllCookies();
ui.setLastLoginIP(ui.getLoginIP());
ui.setLastLoginTime(ui.getLoginTime());
ui.setLoginIP(request.getRemoteAddr());
ui.setLoginTime(new Date());
ui.setUserLocale(request.getLocale().toString());
long nowTime = System.currentTimeMillis();
UserOnline uo = new UserOnline();
uo.setAtPlace("");
uo.setBoardID(0);
uo.setNickName(ui.getNickName());
uo.setOnlineTime(nowTime);
uo.setUserGroupID(ui.getGroupID());
uo.setUserID(ui.getId());
uo.setUserName(ui.getUserName());
uo.setValidateCode(ui.getId() + "_" + nowTime);
if (ui.getHiddenLogin() == 1) { // 用户隐身登录
uo.setHiddenUser(1);
}
try {
ui = userService.saveAtLogin(ui); // 用户登录处理
uo = userOnlineService.createUserOnline(uo); // 加入在线用户表
us = userService.getUserSession(ui);
us.setLastActiveTime(nowTime);
us.setValidateCode(uo.getValidateCode());
ac.getSession().put(Constant.USER_SESSION_KEY, us);
// UserSession us =
// userService.getUserSession(ui);
// userSessionCache.add(ui.getUserName(),
// us);
uc.addCookies(ui);
} catch (BbscsException ex) {
logger.error(ex);
}
} else { // 用户不存在,是新用户
isNewUser = true;
}
}
}
if (isNewUser) { // 创建社区用户
Locale locale = request.getLocale();
IPSeeker ipSeeker = (IPSeeker) wc.getBean("ipSeeker");
UserInfo ui = new UserInfo();
ui.setAcceptFriend(1);
ui.setAnswer("Answer");
ui.setArticleEliteNum(0);
ui.setArticleNum(0);
ui.setBirthDay(1);
ui.setBirthMonth(1);
ui.setBirthYear(1980);
ui.setEmail(uc.getPusername() + "@");
ui.setExperience(0);
ui.setForumPerNum(0);
ui.setForumViewMode(0);
ui.setHavePic(0);
ui.setLastLoginIP("");
ui.setLastLoginTime(new Date());
ui.setLifeForce(0);
ui.setLiterary(0);
ui.setLoginIP("");
ui.setLoginTime(new Date());
ui.setLoginTimes(1);
ui.setNickName(sysConfig.bestrowScreenNickName(uc.getPusername()));
ui.setPasswd("1234");
ui.setPicFileName("");
ui.setPostPerNum(0);
ui.setQuestion("Question");
ui.setReceiveNote(1);
ui.setRegTime(new Date());
ui.setRePasswd(Util.hash("1234"));
ui.setSignDetail0("");
ui.setSignDetail1("");
ui.setSignDetail2("");
ui.setSignName0("A");
ui.setSignName1("B");
ui.setSignName2("C");
ui.setStayTime(0);
ui.setTimeZone("GMT+08:00");
ui.setUserFrom(ipSeeker.getCountry(request.getRemoteAddr()));
ui.setUserKnow(0);
ui.setUserName(uc.getPusername());
ui.setUserTitle(0);
if (sysConfig.isCheckRegUser()) {
ui.setValidated(0);
ui.setGroupID(Constant.USER_GROUP_UNVUSER);
} else {
ui.setValidated(1);
ui.setGroupID(Constant.USER_GROUP_REGUSER);
}
ui.setEditType(-1);
ui.setUserLocale(locale.toString());
ui.setCoin(100);
UserDetail ud = new UserDetail();
ud.setBrief("");
ud.setDreamJob("");
ud.setDreamLover("");
ud.setFavourArt("");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -