亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

南宫市| 邵武市| 防城港市| 淮安市| 九龙县| 克山县| 滕州市| 康乐县| 温宿县| 东乡族自治县| 和顺县| 阿拉善盟| 云和县| 黔西| 拉孜县| 平远县| 河津市| 中江县| 屯昌县| 永顺县| 中宁县| 平度市| 三台县| 阿荣旗| 山东省| 澄迈县| 普兰店市| 红原县| 岚皋县| 财经| 绥滨县| 正阳县| 奉节县| 安顺市| 香港| 松桃| 隆尧县| 孝义市| 西藏| 东方市| 建湖县|