解决方案 »
- 求大神帮帮忙。做了一半不会做了。一个题目
- 为什么在linux的tomcat的conf目录配置应用程序无效?
- 关于javascript全局变量和局部变量访问的问题!!
- 有木有ibatis高手?帮个忙
- 第一次写关于ssh程序 如何判断是否写对了每一步?大侠给支支招
- jsp验证码怎么引用?
- tomcat数据源配置问题
- 新手上路,请教!
- 一个数据岛的奇特问题??
- 通过Hibernate 如何插入一个查询?insert into tablename1(...) select ... from tablename2
- 请教一个sql连接查询问题?
- hibernate测试报错No suitable driver found for jdbc:oracle:thin:@localhost:1521:orcl
例:package com.utils;import java.io.IOException;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;import com.cheater.init.service.InitService;
import com.cheater.init.service.InitServiceImpl;
import com.cheater.model.User;/**
*
* @Date: 2013-12-13 下午4:59:27
* @Author: Gyh
* @TODO: 系统权限过滤器(未登录用户不允许访问某些功能)
*/
public class PrivilegeFilter implements Filter {
WebApplicationContext context;
private static Logger logger = Logger.getLogger(LogAspect.class);
@Override
public void destroy() {
} @Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
doBeforeFilter(arg0);//判断是否保存有登录信息
try {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
User user = (User) request.getSession().getAttribute(Constants.USER);
String action = request.getServletPath();//action名
System.out.println("调用的action:"+action);
if(null!=request.getQueryString())
System.out.println("传递的参数:"+request.getQueryString());
//String params=request.getQueryString();//后面的参数
Map<String,String>acceptedAction=Constants.ACCEPTED_ACTION;
if (null==user&&acceptedAction.containsKey(action)){
response.sendRedirect(request.getContextPath()
+ "/init_login.action");
}
else{
arg2.doFilter(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
} private void doBeforeFilter(ServletRequest request) {
HttpSession session = ((HttpServletRequest) request).getSession(true);
//首先检查session,若已经登陆则直接忽略以下代码
if (session.getAttribute(Constants.USER) != null) {
return;
} Cookie[] cookies = ((HttpServletRequest) request).getCookies();
String email = null;
String password = null;
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("email")) {
email = c.getValue();
}
if (c.getName().equals("pass")) {
password = c.getValue();
}
}
context=WebApplicationContextUtils.getWebApplicationContext(session.getServletContext());
//获取spring bean
InitService initService = (InitService) context.getBean("initService");
User user=initService.getUser(email, password);
if (user!=null) {
logger.info(user.getEmail()+" 通过COOKIE登录..");
session = ((HttpServletRequest) request).getSession(true);
session.setAttribute(Constants.USER,user);
}
}
} @Override
public void init(FilterConfig arg0) throws ServletException {
}
}