本篇文章为大家展示了Springboot中怎么通过自定义HandlerMethodArgumentResolver获取当前登陆者,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联是一家专注于成都网站建设、成都网站制作与策划设计,碑林网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:碑林等地区。碑林做网站价格咨询:13518219792
Springboot版本是2.0.5.release。
一般在controller方法中要获取当前登陆者,我们可以自定义HandlerMethodArgumentResolver来实现,如下:
List-1
@Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface LoginUser { } ... public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter methodParameter) { return methodParameter.getParameterType().isAssignableFrom(UserVo.class) && methodParameter.hasParameterAnnotation(LoginUser.class); } @Override public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception { return SpringHelper.getLoginUser(); } } ... @Configuration public class WebSecurityConfig implements WebMvcConfigurer { @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new LoginUserHandlerMethodArgumentResolver()); } ... public class SpringHelper { public static HttpServletRequest getCurrentRequest() { HttpServletRequest request = null; try { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (null==requestAttributes){ return null; } request = ((ServletRequestAttributes)requestAttributes ).getRequest(); } catch (Exception e) { return request; } return request; } public static UserVo getLoginUser() { return (UserVo) getCurrentRequest().getSession().getAttribute(WebSecurityConfig.SESSION_KEY); } }
List-2
public List<PasgrInfoFlightVo> queryIDInfo(@LoginUser UserVo userVo) throws AicException { ... }
List-1中,我们自定义了LoginUserHandlerMethodArgumentResolver,方法supportsParameter返回true标示支持此参数的解析,之后会调用resolveArgument进行参数的解析。
List-2中,我们直接在controller的方法上加上@LoginUser注解,之后Spring会自动将userVo传入。
上述内容就是Springboot中怎么通过自定义HandlerMethodArgumentResolver获取当前登陆者,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
分享标题:Springboot中怎么通过自定义HandlerMethodArgumentResolver获取当前登陆者
分享路径:https://www.cdcxhl.com/article12/gcohdc.html
成都网站建设公司_创新互联,为您提供App开发、网站收录、App设计、软件开发、网站建设、响应式网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联