日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot 攔截器和自定義注解判斷請求是否合法

瀏覽:39日期:2023-04-01 11:49:40

應用場景舉例:

當不同身份的用戶請求一個接口時,用來校驗用戶某些身份,這樣可以對單個字段數據進行精確權限控制,具體看代碼注釋

自定義注解

/** * 對比請求的用戶身份是否符合 * @author liuyalong * @date 2020/9/25 16:03 */@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)public @interface CompareUser { /** * The name of the request parameter to bind . */ @AliasFor('name') String value() default ''; @AliasFor('value') String name() default '';}給controller的字段添加注解

@ApiOperation(value = '刪除用戶', notes = '根據手機號來刪除用戶') @PostMapping(value = '/delete_phone') public BaseCommonResult<Integer> deletePhone(@CompareUser(value = 'phone') String phone) { int i = userService.deleteByPhone(phone); return BaseCommonResult.success(i); }參數解析器

記得繼承后加@Component,這里是Base...所以不用

/** * @author liuyalong * @date 2020/9/25 15:56 */public class BaseCurrentUserInterceptor implements HandlerMethodArgumentResolver { /** * 用于判定是否需要處理該參數注解,返回true為需要, * 并會去調用下面的方法resolveArgument。 */ @Override public boolean supportsParameter(MethodParameter parameter) { //只處理CurrentUser注解修飾的參數 return parameter.hasParameterAnnotation(CompareUser.class); } /** * 對比用戶信息 */ @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { CompareUser parameterAnnotation = parameter.getParameterAnnotation(CompareUser.class); Class<?> parameterType = parameter.getParameterType(); if (parameterAnnotation == null) { throw new IllegalArgumentException('Unknown parameter type [' + parameterType.getName() + ']'); } /* * 獲取要驗證的字段名 */ //檢查是否給字段取了別名 String paramName = ''.equalsIgnoreCase(parameterAnnotation.name()) ? parameterAnnotation.value() : parameterAnnotation.name(); if (''.equalsIgnoreCase(parameterAnnotation.name())) { //從參數中獲取定義的字段名 paramName = parameter.getParameter().getName(); } //獲取請求字段的值 String paramValue = String.valueOf(webRequest.getParameter(paramName)); //從請求頭中獲取已經登錄的用戶 String userName = webRequest.getHeader(AuthConstant.USER_TOKEN_HEADER); //對于root用戶,可以操作一切,所以直接返回 if (!AuthConstant.ROOT_USER.equals(userName)) { //判斷身份是否一致,不一致就拋出異常,讓RestControllerAdvice處理 if (userName == null || !userName.equals(paramValue)) {throw new NotSameAuthorException(); } } //將參數原封不動返回出去,需要還原回需要的類型 WebDataBinder binder = binderFactory.createBinder(webRequest, parameterType, paramName); return binder.convertIfNecessary(paramValue, parameterType, parameter); }}配置WebMvcConfigurer

注意這里提供了兩種方式加載,因為

@Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Autowired private HandlerInterceptor handlerInterceptor; @Autowired private HandlerMethodArgumentResolver currentUserInterceptor; @Autowired private RequestMappingHandlerAdapter requestMappingHandlerAdapter; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(handlerInterceptor).addPathPatterns('/**'); } //參數解析器,自定義的優先級最低,所以會失效, // 解決方案是下面的 @PostConstruct ,把優先級調最高 // 但是這樣@PathParam @RequestParam就失效了,@CompareUser(value='xxx')可以完全替換@RequestParam功能// @Override// public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {// resolvers.add(currentUserInterceptor);//// } /** *參數解析器優先級調最高 */ @PostConstruct public void init() { // 獲取當前 RequestMappingHandlerAdapter 所有的 Resolver 對象 List<HandlerMethodArgumentResolver> resolvers = requestMappingHandlerAdapter.getArgumentResolvers(); List<HandlerMethodArgumentResolver> newResolvers = new ArrayList<>(resolvers.size() + 1); // 添加自定義參數解析器到集合首位 newResolvers.add(currentUserInterceptor); // 添加 已注冊的 Resolver 對象集合 newResolvers.addAll(resolvers); // 重新設置 Resolver 對象集合 requestMappingHandlerAdapter.setArgumentResolvers(newResolvers); }}效果

只有特定身份人員才可以刪除操作

以上就是SpringBoot 攔截器和自定義注解判斷請求是否合法的詳細內容,更多關于SpringBoot 攔截器和自定義注解的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91成人网在线观看| 亚洲午夜黄色| 国产精品日韩精品中文字幕| 日韩精品诱惑一区?区三区| 精品在线91| 国产高清亚洲| 亚洲激情二区| 欧美亚洲tv| 美女久久一区| 91成人精品视频| 亚洲第一精品影视| 精品视频自拍| 国产欧美激情| 尤物网精品视频| 国产精品成人a在线观看| 日韩精品免费观看视频| 中文字幕亚洲影视| 天堂成人免费av电影一区| 激情国产在线| 精品一区二区三区免费看 | 青草久久视频| 日本欧美在线| 日韩国产91| 日韩精品久久理论片| 综合在线一区| 日韩精品欧美成人高清一区二区| 成人免费网站www网站高清| 中文在线免费视频| 国产日韩电影| 99久久夜色精品国产亚洲狼| 久久国产主播| 久久福利影视| 日本不卡一二三区黄网| 日韩成人一级| 韩国一区二区三区视频| 精品91福利视频| 99精品小视频| 中文无码久久精品| 国产精品毛片久久久| 久久福利在线| 久久精品99久久无色码中文字幕| 高清日韩中文字幕| 欧美专区一区| 成人在线观看免费视频| 日韩久久精品网| 红桃视频国产精品| 精品视频在线观看网站| 麻豆久久久久久| 国产色噜噜噜91在线精品| 久久国产人妖系列| 欧美好骚综合网| 亚洲激情国产| 欧美欧美黄在线二区| 日韩在线观看一区| 欧美在线首页| 亚洲男女av一区二区| 亚洲啊v在线| 亚洲一二av| 日韩欧美一区二区三区免费看| 日韩视频在线一区二区三区| 亚洲天堂日韩在线| 国产精品久久久久久久久久10秀 | 精品一区二区男人吃奶| 中文字幕亚洲影视| 日韩精品a在线观看91| 日韩欧美2区| 五月激激激综合网色播| 日韩高清中文字幕一区| 91欧美日韩在线| 国产精品色婷婷在线观看| 亚洲专区一区| 国产日韩免费| 久久亚洲黄色| 国产高潮在线| 国产亚洲精品美女久久久久久久久久| 国产欧美二区| 亚洲综合精品四区| 日韩三级精品| 手机在线电影一区| 亚洲一区二区成人| 中文字幕av一区二区三区四区| 天堂久久一区| 国产白浆在线免费观看| 日韩中文字幕一区二区三区| 免费精品国产| 在线观看一区| 99精品综合| 麻豆一区二区在线| 亚洲人成高清| 婷婷中文字幕一区| 国产精品美女久久久久久不卡| 日韩成人亚洲| 国产精品**亚洲精品| 制服诱惑一区二区| 精品久久不卡| 在线综合视频| 日韩精品不卡一区二区| 国产亚洲欧美日韩精品一区二区三区| 一区二区精品| 国产在线成人| 日本不卡视频在线观看| 久久亚洲国产| 韩国久久久久久| 国产日本久久| 久久国产精品成人免费观看的软件| 国产乱码精品| 久久精品99久久久| 国产精品日韩| 国产美女一区| 亚洲中午字幕| 国产精品女主播一区二区三区| 香蕉精品久久| 日韩欧美二区| 国产91在线播放精品| 国产精品久久久久久久久免费高清 | 最近高清中文在线字幕在线观看1| 国产亚洲一区二区三区不卡| 日韩在线观看一区二区三区| 午夜亚洲精品| 日韩一区二区免费看| 欧美三级精品| 国产精品久久久久久久久久妞妞| 亚洲精品成人一区| 男人操女人的视频在线观看欧美| 另类av一区二区| 日韩专区视频网站| 日韩av成人高清| 97久久中文字幕| 亚洲精品乱码| 亚洲精品电影| 一区二区电影| 国产欧美一区| 免费精品一区| 欧美日韩在线观看视频小说| 蜜臀av在线播放一区二区三区 | 精品欠久久久中文字幕加勒比| 久久av资源| 精品久久久网| 91成人福利| 中文字幕乱码亚洲无线精品一区| 欧美男人天堂| 精品视频自拍| 国产综合精品一区| 91九色精品| 色在线视频观看| 国产精品一区2区3区| 手机精品视频在线观看| 国产剧情一区| 蜜臀久久99精品久久久画质超高清 | 日韩欧美在线中字| 日韩高清一区| 亚洲黄色网址| 欧美日韩网址| 中文欧美日韩| 欧美精品资源| 国产v日韩v欧美v| 美女国产精品久久久| 亚洲综合中文| 久久成人国产| 久久精品系列| 香蕉久久一区| 老牛国产精品一区的观看方式| 久久国产66| 欧美亚洲在线日韩| 成人日韩精品| 国产精品地址| 亚洲精品一级二级三级| 在线视频日韩| 免费观看日韩电影| 久久先锋影音| 国产精品av一区二区| 日韩精品永久网址| 国产精品久久久久久久免费观看| 国产一区调教| 欧美日韩99| 国产激情精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲小说欧美另类婷婷| 99视频精品全国免费| 国产精品免费不| 免费国产自久久久久三四区久久| 久久精品国产亚洲夜色av网站 | 日韩av网站在线观看| 国产情侣久久| 国产日韩欧美一区| 国产精品日本欧美一区二区三区| 日韩大片在线播放| 免费欧美在线视频| 精品久久久中文字幕| 精品国产aⅴ| 日韩av一级| 亚洲伊人精品酒店| 国产精品3区| 91久久久久| 精品亚洲自拍| 香蕉国产精品| 久久亚洲国产精品尤物| 91精品电影| 麻豆精品视频在线| 欧美激情视频一区二区三区在线播放|