中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springboot中怎么通過自定義HandlerMethodArgumentResolver獲取當前登陸者

發布時間:2021-07-08 16:39:19 來源:億速云 閱讀:204 作者:Leah 欄目:大數據

本篇文章為大家展示了Springboot中怎么通過自定義HandlerMethodArgumentResolver獲取當前登陸者,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

    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 {
  ...
}
  1. List-1中,我們自定義了LoginUserHandlerMethodArgumentResolver,方法supportsParameter返回true標示支持此參數的解析,之后會調用resolveArgument進行參數的解析。

  2. List-2中,我們直接在controller的方法上加上@LoginUser注解,之后Spring會自動將userVo傳入。

上述內容就是Springboot中怎么通過自定義HandlerMethodArgumentResolver獲取當前登陸者,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芦山县| 十堰市| 洛阳市| 潞西市| 布拖县| 怀集县| 如皋市| 镇宁| 砚山县| 凌海市| 西林县| 景德镇市| 清水县| 大港区| 盐城市| 东兴市| 云南省| 永寿县| 南木林县| 桃园市| 台东市| 特克斯县| 东城区| 河曲县| 临江市| 丰原市| 和政县| 乐昌市| 牡丹江市| 鹿泉市| 宾川县| 宁乡县| 遂平县| 新和县| 靖安县| 韩城市| 和平区| 枞阳县| 区。| 淮北市| 开江县|