springboot拦截器实现

第一步,编写Interceptor实现HandlerInterceptorAdapter;
第二步,编写WebapiMvcConfig实现WebMvcConfigurerAdapter,将上面编写的Interceptor配置进去。

代码如下:

open class RequestInterceptor : HandlerInterceptorAdapter() {

    override fun preHandle(request: HttpServletRequest? , response: HttpServletResponse? , handler: Any?): Boolean {
        LOGGER.trace(" requestUri[${request?.requestURI}], clientIp[${request?.getHeader("X-Real-IP")}], handler[$handler]")
        val requestURI = request?.requestURI
        //swagger api文档 start
        if ((requestURI!!.contains("swagger")
                        || requestURI.contains("api-docs")
                        || requestURI.contains("/error")
                        || requestURI.contains("ops")
                        || requestURI.contains("/login"))) {
            return true
        }

//        request.setAttribute("sysuser_id" , "1")
//        return  true

        val token = request.getHeader(SYS_ACCESS_TOKEN_TAG)
        LOGGER.info("login token: $token")
        if (StringUtils.isEmpty(token)) {
            throw BizException(ErrorCode.USER_NOT_LOGIN)
        }

        val uid = adminOauthRepository.getUidByAccessToken(token,Oauth2TokenPrefixType.ADMIN_USER) ?:
                throw BizException(ErrorCode.ACCESS_TOKEN_EXPIRED)

        LOGGER.info("login userid: $uid")
        request.setAttribute("sysuser_id" , uid)
        request.setAttribute("token" , token)
        return true
    }

    val SYS_ACCESS_TOKEN_TAG = "atoken"
    private val LOGGER = LoggerFactory.getLogger(RequestInterceptor::class.java)

    @Autowired lateinit var adminOauthRepository: AdminOauthRepository
}

 

@Configuration
open class WebapiMvcConfig : WebMvcConfigurerAdapter() {

    /**
     * 拦截用户请求
     */
    override fun addInterceptors(registry: InterceptorRegistry?) {
        registry!!.addInterceptor(requestInterceptor())
    }

    /**
     * token校验
     */
    @Bean
    open fun requestInterceptor(): RequestInterceptor {
        return RequestInterceptor()
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值