其他分享
首页 > 其他分享> > WebMvcConfigurer中addArgumentResolvers方法的使用

WebMvcConfigurer中addArgumentResolvers方法的使用

作者:互联网

在Springboot中的WebMvcConfigurer接口在Web开发中经常被使用,例如配置拦截器、配置ViewController、配置Cors跨域等。本文主要讲解另一个方法:addArgumentResolvers()在实例中的应用。

一、方法作用

该方法可以用在对于Controller中方法参数传入之前对该参数进行处理。然后将处理好的参数在传给Controller中的方法。

官方API文档解释:添加解析器以支持自定义控制器方法参数类型。

这不会覆盖对解析处理程序方法参数的内置支持。要自定义对参数解析的内置支持,请RequestMappingHandlerAdapter直接配置。

二、场景描述

在权限场景中,通常会有要求用户登录之后才能访问的场景。对于这些问题可以多种解决方案,如:使用Cookie+Session的会话控制、使用拦截器、使用SpringSecurity或shiro等权限管理框架等。

这里使用Cookie+Session处理。处理的逻辑为:

用户第一次登录之后会得到一个cookie,在以后每次的访问过程中都会携带Cookie进行访问。在后台的Controller中对于需要登录权限的访问接口都要先获取Cookie中的Token,再使用Token从session中获取用户登录信息来判断用户登录情况决定是否放行。

三、存在问题

如果在每个需要登录权限访问的方法中都要写这个逻辑就会使代码重复,出现了冗余。代码基本如下:

@GetMapping("goods")
public Result showGoods1(HttpSession session, @CookieValue("Token") String token){
    // 你每次都要在这里判断token或session
    if (token == null || MyObjectUtil.isEmpty(session.getAttribute(token))){
        return Result.error();
    }
    return Result.ok();
}

所以需要寻找是否有更好的解决方法。

最终找到addArgumentResolvers()这个方法。只需要在这个方法中进行处理即可。

四、问题解决

该方法的处理流程如下:

代码如下:

标签:return,Controller,addArgumentResolvers,token,session,参数,WebMvcConfigurer,方法
来源: https://www.cnblogs.com/wurao/p/15556787.html