package com.kidgrow.common.resolver;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.kidgrow.common.annotation.LoginClient;
|
import com.kidgrow.common.constant.SecurityConstants;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.core.MethodParameter;
|
import org.springframework.web.bind.support.WebDataBinderFactory;
|
import org.springframework.web.context.request.NativeWebRequest;
|
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
import org.springframework.web.method.support.ModelAndViewContainer;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: head中的应用参数注入clientId中<br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/3 16:04 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
@Slf4j
|
public class ClientArgumentResolver implements HandlerMethodArgumentResolver {
|
/**
|
* 入参筛选
|
*
|
* @param methodParameter 参数集合
|
* @return 格式化后的参数
|
*/
|
@Override
|
public boolean supportsParameter(MethodParameter methodParameter) {
|
return methodParameter.hasParameterAnnotation(LoginClient.class) && methodParameter.getParameterType().equals(String.class);
|
}
|
|
/**
|
* @param methodParameter 入参集合
|
* @param modelAndViewContainer model 和 view
|
* @param nativeWebRequest web相关
|
* @param webDataBinderFactory 入参解析
|
* @return 包装对象
|
*/
|
@Override
|
public Object resolveArgument(MethodParameter methodParameter,
|
ModelAndViewContainer modelAndViewContainer,
|
NativeWebRequest nativeWebRequest,
|
WebDataBinderFactory webDataBinderFactory) {
|
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
|
String clientId = request.getHeader(SecurityConstants.CLIENT_HEADER);
|
if (StrUtil.isBlank(clientId)) {
|
log.warn("resolveArgument error clientId is empty");
|
}
|
return clientId;
|
}
|
}
|