受登录过滤器限制的页面仍可被其他用户访问 [英] Pages restricted by login filter are still accessible by other users

查看:138
本文介绍了受登录过滤器限制的页面仍可被其他用户访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在登录应用程序中使用过滤器.我只想要一些页面 由管理员访问.我已经将这些页面保存在admin文件夹中, 在我的项目中实施了过滤器.但是页面仍然可以访问 通过其他用户的URL.

I am using Filters in my login application. I want some pages only accessed by admin. I have kept those pages in admin folder and implemented filters in my project. But pages are still accessible through URL by other users.

我要去哪里错了?

import java.io.IOException;

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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class LoginFilter implements Filter {

    @Override
    public void init(FilterConfig config) throws ServletException {
        // If you have any <init-param> in web.xml, then you could get them
        // here by config.getInitParameter("name") and assign it as field.
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        HttpSession session = request.getSession(false);

        if (session == null || session.getAttribute("user") == null) {
            response.sendRedirect(request.getContextPath() + "/Login.xhtml"); // No logged-in user found, so redirect to login page.
        } else {
            chain.doFilter(req, res); // Logged-in user found, so just continue request.
        }
    }

    @Override
    public void destroy() {
        // If you have assigned any expensive resources as field of
        // this Filter class, then you could clean/close them here.
    }

}

推荐答案

从理论上讲,有两个可能的原因:

Theoretically there are 2 possible reasons for this:

  • 过滤器根本不运行
  • 过滤器不保护应用程序的页面.

我知道这听起来很简单,但是您能否指定过滤器是否完全运行,如果可以,您是否要使用chain.doFilter(req,res)?

I know it sounds trivially but could you specify whether the filter runs at all, and if yes, do you come to chain.doFilter(req,res) ?

这篇关于受登录过滤器限制的页面仍可被其他用户访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆