少年不惧岁月长_ 2018-10-12 07:26 采纳率: 0%
浏览 1962

Java中加入登陆拦截器后,post put delete请求全部405,只有get请求可以访问。请问应该怎么解决?

下面是我拦截器的代码。

 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        // 获得在下面代码中要用的request,response,session对象
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        HttpSession session = httpRequest.getSession(true);

        String[] str = {"login","docs"}; // 路径中包含这些字符串的,可以不用登录直接访问
        StringBuffer url = httpRequest.getRequestURL();
        // 特殊用途的路径可以直接访问
        if (str != null && str.length > 0) {
            for (String s : str) {
                if (url.indexOf(s) >= 0) {
                    filterChain.doFilter(servletRequest, servletResponse);
                    return;
                }
            }
        }
        // 从session中获取用户信息
        String loginInfo = (String) session.getAttribute("username");
        if (null != loginInfo && !"".equals(loginInfo)) {
            // 用户存在,可以访问此地址
            filterChain.doFilter(servletRequest, servletResponse);
        } else {
            // 用户不存在,踢回登录页面
//            String a = httpRequest.getContextPath()+"/login/notLogin";
            servletRequest.getRequestDispatcher("/login/notLogin").forward(servletRequest, httpResponse);
            return;
        }

    }

这里是我web.xml的配置

  <!-- 登录过滤器 -->
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>aa.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/aa/*</url-pattern>
        <url-pattern>/bb/*</url-pattern>
        <url-pattern>/cc/*</url-pattern>
        <url-pattern>/dd/*</url-pattern>
        <url-pattern>/ee/*</url-pattern>
    </filter-mapping>

接口是restful接口。
有大神知道原因吗?

  • 写回答

4条回答 默认 最新

  • 大川里的小川人 2018-10-12 07:49
    关注

    理论上你的配置文件只会起到拦截的作用,不会对get post这些有影响的,可以放一下其他的配置文件以及拦截器class中其他部分的代码吗?使用框架的时候有些方式可以直接限定post get的。

    评论

报告相同问题?

悬赏问题

  • ¥15 vhdl+MODELSIM
  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题