91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

文登市| 日土县| 乾安县| 古浪县| 卢氏县| 开江县| 包头市| 洪泽县| 湖州市| 普陀区| 池州市| 丘北县| 福泉市| 林芝县| 阿克陶县| 定兴县| 静海县| 长治市| 东丽区| 习水县| 大新县| 阳曲县| 修文县| 灵石县| 金塔县| 东台市| 绥阳县| 岢岚县| 万山特区| 海宁市| 河南省| 阿拉尔市| 嘉禾县| 崇信县| 北票市| 周口市| 共和县| 前郭尔| 沭阳县| 临夏市| 丰顺县|