我做了登陆权限过滤器,但是之后出现的问题可能是缓存问题不知道怎么解决?
我做了登陆权限过滤器,未登录时是不能访问如:部门资料、选型与报价、报销、部门事务这些链接的;登陆了才可以访问这些链接。
但是现在的问题是登陆之后,访问了部门资料、选型与报价、报销、部门事务这些链接,然后退出,退出之后未登录却变成了依然可以访问这些链接
希望有高手指点这是什么问题?
应该怎么解决?
我的过滤器代码如下:
[code=java][/
public class PermissionFilter implements Filter {
/**
* Default constructor.
*/
public PermissionFilter() {
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request; //强制转换成HttpServletRequest
HttpServletResponse resp=(HttpServletResponse)response;
String servletPath=req.getServletPath();
HttpSession session=req.getSession();
//获取session对象中flag的值,强制转换成字符串类型
String flag=(String)session.getAttribute("flag");
System.out.println(servletPath);
System.out.println(session);
System.out.println(flag);
if(null!=servletPath&&(servletPath.equals("/02/login.jsp")||(servletPath
.equals("/index.jsp"))||(servletPath.equals("/checkServlet")))){
chain.doFilter(request, response);
}else if(servletPath.contains(".css")||servletPath.contains(".js")||servletPath.contains(".gif")||servletPath.contains(".png")){
chain.doFilter(request, response);
}
else{
if(null!=flag&&flag.equals("login_success")){
chain.doFilter(request, response);
}else if(null!=flag&&flag.equals("login_error")){
// 设定网页的到期时间,一旦过期则必须到服务器上重新调用
resp.setDateHeader("Expires", 0);
// Cache-Control 指定请求和响应应遵循的缓存机制 no-cache指示请求或响应消息是不能缓存的
resp.setHeader("Cache-Control", "no-cache");
// 用于设定禁止浏览器从本地缓存中调用页面内容,设定后一旦离开页面就无法从Cache中再调出
resp.setHeader("Pragma", "no-cache");
req.setAttribute("msg", "登录失败,请重新登陆<br/>");
req.setAttribute("return_uri", servletPath);
RequestDispatcher rd=req.getRequestDispatcher("/02/login.jsp");
rd.forward(req, resp);
}else{
// 设定网页的到期时间,一旦过期则必须到服务器上重新调用
resp.setDateHeader("Expires", 0);
// Cache-Control 指定请求和响应应遵循的缓存机制 no-cache指示请求或响应消息是不能缓存的
resp.setHeader("Cache-Control", "no-cache");
// 用于设定禁止浏览器从本地缓存中调用页面内容,设定后一旦离开页面就无法从Cache中再调出
resp.setHeader("Pragma", "no-cache");
req.setAttribute("msg", "尚未登录,请登陆<br/>");
req.setAttribute("return_uri", servletPath);
RequestDispatcher rd=req.getRequestDispatcher("/02/login.jsp");
rd.forward(req, resp);
}
}
}
/**
* @see Filter#destroy()
*/
public void destroy() {
}
}
code]