package com.estate.expert.common.auth; import org.springframework.core.MethodParameter; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; /** * 认证调用者解析器 */ public class AuthCallerResolver implements HandlerMethodArgumentResolver { /** * 是否支持参数 * @param methodParameter 方法参数 * @return 是否支持 */ @Override public boolean supportsParameter(MethodParameter methodParameter) { return methodParameter.getParameterType().isAssignableFrom(AuthCaller.class); } /** * 解析参数 * @param parameter 方法参数 * @param mavContainer 模型视图容器 * @param webRequest 网络请求 * @param binderFactory 数据绑定工厂 * @return 参数 */ @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { return webRequest.getAttribute(AuthInterceptor.AUTH_PAYLOAD_KEY, RequestAttributes.SCOPE_REQUEST); } }