当前位置 主页 > 网站技术 > 代码类 >

    spring boot配置拦截器代码实例

    栏目:代码类 时间:2019-11-13 18:06

    这篇文章主要介绍了spring boot配置拦截器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    首先引入web模块的依赖:

    复制代码
    <!-- spring boot web 组件 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- spring boot web 组件 -->
    复制代码

    然后编写拦截器类:

    复制代码
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.springframework.util.StringUtils;
    import org.springframework.web.method.HandlerMethod;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    import simple.proj.zxz.play.comm.GeneralConsts;
    import simple.proj.zxz.play.pojo.vo.comm.CommOutVO;
    import simple.proj.zxz.play.prop.CommProp;
    import simple.proj.zxz.play.utils.JsonUtil;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;


    /**
    * api访问拦截器
    *
    * @author Zxz
    * @version 1.0
    * @date Created at 2018/11/24
    **/

    @Slf4j
    @Component
    public class ApiAccessInterceptor extends HandlerInterceptorAdapter {

    @Autowired
    private CommProp commProp;

    /**
    * http响应类型字段
    */
    private static final String RESPONSE_CONTENT_TYPE = "Content-Type";
    /**
    * http响应类型:json
    */
    private static final String RESPONSE_HEADER_JSON = "application/json";

    /**
    * 访问认证拦截
    *
    * @param request 请求
    * @param response 响应
    * @param handler 数据
    * @return boolean
    * @author Zxz
    * @date 2019/10/25 17:34
    **/
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    //方法类型过滤
    if (!(handler instanceof HandlerMethod)) {
    return super.preHandle(request, response, handler);
    }

    //token验证
    String token = request.getHeader(GeneralConsts.REQ_HEADER_AUTH);
    if (StringUtils.isEmpty(token)) {
    //没有token信息,未登录
    response.setHeader(RESPONSE_CONTENT_TYPE, RESPONSE_HEADER_JSON);
    response.getWriter().write(JsonUtil.toFormattedJsonString(CommOutVO.getNotAuth()));
    return false;
    } else if (!auth(token)) {
    return false;
    }

    return super.preHandle(request, response, handler);
    }

    /**
    * 验证认证信息是否可以
    *
    * @param token token串
    * @return boolean
    * @author Zxz
    * @date 2019/10/25 17:48
    **/
    private boolean auth(String token) {
    return token.equals(commProp.getUserPermanentAuthorization());
    }


    }
    复制代码

    最后在配置类里面加入拦截器以及要拦截的路径:

    复制代码