美文网首页Spring
spring-intercepter自定义拦截请求

spring-intercepter自定义拦截请求

作者: Sophie12138 | 来源:发表于2017-07-02 11:24 被阅读39次

如果不想将冗长的逻辑处理给到框架内部处理,或者不想使用原生处理,可以试用spring-intercepter进行请求捕捉,然后自定义Filter进行处理。

这样的好处是,整个逻辑看起来很立体,可以满足自己特定的业务需求,摸清了框架内部的套路,再也不是将相应的请求扔到内部,而自己只是写一堆正则表达式就完事了。

在springmvc中定义:

    <!-- 自定义普通用户拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <!-- 不需要拦截的请求 -->
            <mvc:exclude-mapping path="/login"/>
            <!-- 自定义Filter -->
            <bean class="org.liao.filter.AutoLoginFilter" />
        </mvc:interceptor>
    </mvc:interceptors>

在自定义Filter中实现HandlerInterceptor,然后重写相关的方法,在preHandle()中编写相应的逻辑代码。

类似:

public class ManageLoginFilter implements HandlerInterceptor {

    @Resource
    private UserService userService;

    public void afterCompletion(HttpServletRequest httpServletRequest,
                                HttpServletResponse httpServletResponse,
                                Object o, Exception e) throws Exception {

    }

    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object o) throws Exception {

        Cookie[] cookies = request.getCookies();
        int isAuto = -1;
        User temp = new User();

        for (Cookie c:cookies) {
            if (c.getName().equals("autoLoginUser")) {

                temp = userService.findByUserName(c.getValue());
                isAuto = 1;

            }
        }

        System.out.println(isAuto+","+temp.getIsAdmin());
        if (isAuto == -1 || temp.getIsAdmin() != 1) {

            //请用管理员用户重新登录
            //退出到登录页面
            response.sendRedirect(request.getContextPath()+"/login");
            return false;
        }

        for (Cookie c:cookies) {
            if (c.getName().equals("sessionId")) {
                if (!c.getValue().equals(temp.getSessionId())) {
                    //退出到登录页面
                    response.sendRedirect(request.getContextPath()+"/login");
                    return false;
                }
            }
        }
        return true;
    }

    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }
}

相关文章

  • spring-intercepter自定义拦截请求

    如果不想将冗长的逻辑处理给到框架内部处理,或者不想使用原生处理,可以试用spring-intercepter进行请...

  • SpringMVC学习笔记 | SpringMVC拦截器详解:自

    自定义拦截器 SpringMVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦截...

  • Spring MVC拦截器

    自定义拦截器 Spring MVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦...

  • SpringMVC(十二)使用拦截器

    一、自定义拦截器 Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自...

  • springMVC自定义拦截器

    Spring MVC使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现Ha...

  • mPaaS H5容器 拦截网络请求

    mPaaS中,拦截网络请求有什么用? 大概说几点: 为请求注入自定义session 为请求单独设置缓存方式 转发 ...

  • okhttp(三)

    OKHttp3通过拦截链的设计,让请求分成5个拦截器去处理,拦截器各司其职,扩展性非常高。拦截链是从自定义的拦截器...

  • 自定义权限注解+filter检查接口请求权限

    自定义注解 在检查的接口上添加注解 创建拦截器 强转为HandleMethod时注意,请求为当GET请求是请求静态...

  • 自定义注解实现解密+单个属性解密

    自定义注解+拦截器实现参数解密 1、首先定义自定义注解类 2、定义RequestBodyAdvice实现请求前的解...

  • WKWebview 拦截 Scheme

    WKWebView 只允许开发者拦截自定义 Scheme 的请求,如果在方法 - [WKWebViewConfig...

网友评论

    本文标题:spring-intercepter自定义拦截请求

    本文链接:https://www.haomeiwen.com/subject/ptuncxtx.html