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

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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog