人员信息"/>
springboot +vue实现token登录3之获取登录人员信息
1.通过自定义 @CurrentUser 获取当前登录用户
1、定义 @CurrenUser注解
package com.presoft.wydlmon.config;import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;import java.lang.annotation.ElementType;
@Target(ElementType.PARAMETER) // 可用在方法的参数上
@Retention(RetentionPolicy.RUNTIME) // 运行时有效
public @interface CurrentUser {}
2、添加参数解析器 (使得上面的注解有效)(HandlerMethodArgumentResolver springboot自定义解析器)
package com.presoft.wydlmon.config;import org.springframework.context.annotation.Configuration;
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;
import org.springframework.web.multipart.support.MissingServletRequestPartException;import com.presoft.wydl.packs.system.model.UserInfo;@Configuration
public class CurrentUserMethodArgumentResolver implements HandlerMethodArgumentResolver {@Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.getParameterType().isAssignableFrom(UserInfo.class)&& parameter.hasParameterAnnotation(CurrentUser.class);}@Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {//取出第二节中放入请求中的用户信息
//AuthenticationInterceptor 最后 //将验证通过后的用户信息放到请求中//httpServletRequest.setAttribute("currentUser", user);UserInfo user = (UserInfo)webRequest.getAttribute("currentUser", RequestAttributes.SCOPE_REQUEST);if (user != null) {return user;}throw new MissingServletRequestPartException("currentUser");}}
3、配置参数解析器
在 WebMvcConfigurer.java 中 Override addArgumentResolvers
方法
//@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {@Overridepublic void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {super.addArgumentResolvers(argumentResolvers);argumentResolvers.add(new CurrentUserMethodArgumentResolver());}
}
4.例子
@UserLoginToken //一定要有,不然没法设置@CurrentUser@RequestMapping(value = "/list",method = RequestMethod.POST)public Response list(EnterpriseVo vo,@CurrentUser UserInfo user) {return enterpriseService.selectByParams(vo);}
更多推荐
springboot +vue实现token登录3之获取登录人员信息
发布评论