📄 userfilter.java
字号:
package com.ntsky.bbs.service;
import java.util.*;
import javax.servlet.http.*;
import org.apache.log4j.Logger ;
import com.ntsky.bbs.action.Constant;
import com.ntsky.bbs.service.*;
import com.ntsky.bbs.service.db.DBUser;
/**
* <p>Title: Ntsky OpenSource BBS</p>
* <p>Description: 用户过滤</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: WWW.FM880.COM</p>
* @author 姚君林
* @version 1.0
*/
public class UserFilter{
private final static Logger logger = Logger.getLogger(UserFilter.class);
private static UserFilter userFilter = null;
public UserFilter(){}
public static synchronized UserFilter getInstance(){
if(userFilter == null){
userFilter = new UserFilter();
}
return userFilter;
}
/**
* 过滤用户的方法
*/
public Map filterUser(HttpSession session,HttpServletRequest request){
Map userRoleMap = null;
User user = getSessionUser(session, "user");
//只有当用户非注销时,而且用户为空,从cookie中获取值
if (isUserLogout(session, "userLogout")) {
if (user == null) {
getCookie(request, session);
}
else {
//获取用户角色
userRoleMap = user.getUsrRoleMap();
}
}
return userRoleMap;
}
/**
* 用户是否注销过
*/
public boolean isUserLogout(HttpSession session,String param){
String logoutUser = (String)session.getAttribute(param);
//如果用户没有注销
if(!"logout".equals(logoutUser)){
return true;
}
else
return false;
}
/**
* 从session中获得用户数据
*/
public User getSessionUser(HttpSession session,String param){
User user = (User)session.getAttribute(param);
return user;
}
/**
* 获取cookie中用户的值
*/
public void getCookie(HttpServletRequest request,HttpSession session){
UserFactory factory = UserFactory.getInstance();
//获取用户本地的cookie
Cookie[] cookie = request.getCookies();
if (cookie != null) {
if (cookie.length > 0) {
for (int i = 0; i < cookie.length; i++) {
logger.info("设置的cookie名 : " + cookie[i].getName());
//获取cookieName为cookie的cookie
String cookieName = cookie[i].getName();
if (cookieName.equals("cookieId")) {
/**
* 由cookie的值取得整个用户实例
*/
String usrId = cookie[i].getValue();
logger.info("cookie的值为 : " + usrId);
//先更新登陆次数
factory.upUserLoginInfo("usrId", usrId);
User user = factory.userInfo(Integer.parseInt(usrId));
/**
* 设置session返回
*/
session.setAttribute(Constant.USER_KEY, user);
}
/*else {
logger.info("没有该用户的cookie,跳转到filter页面");
}*/
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -