成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:7日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产女人水真多18毛片18精品视频 | 夜夜嗨av一区二区三区中文字幕| 成人午夜av电影| 欧美日本在线观看| 精品一区二区三区在线观看| 国产免费成人| 亚洲综合成人在线| 一本色道久久综合亚洲精品不| 国产精品进线69影院| 91视频在线看| 国产日韩精品一区二区三区| 欧美精品免费观看二区| 国产色综合久久| 91麻豆高清视频| 久久久久99精品国产片| 成人伦理片在线| 精品国产亚洲在线| 成人黄色免费短视频| 日韩欧美高清dvd碟片| 懂色av噜噜一区二区三区av| 欧美一区二区三区四区视频| 国产福利一区在线观看| 91麻豆精品国产91| 国产麻豆精品久久一二三| 337p亚洲精品色噜噜噜| 国产麻豆精品在线| 日韩丝袜美女视频| av电影在线不卡| 久久精品一区二区三区av| 午夜欧美精品| 136国产福利精品导航| 亚洲久久一区二区| 亚洲国产精品一区二区尤物区| 久久高清免费观看| 免费观看日韩电影| 欧美日韩亚州综合| 国产成人免费高清| 久久久久久久久久电影| 国产综合色产| 亚洲精品免费播放| 久久五月天婷婷| 激情小说亚洲一区| 精品国产伦一区二区三区观看方式 | 国产在线播放一区| 欧美一个色资源| 91性感美女视频| 亚洲欧美日韩一区| 日本高清不卡一区| 狠狠色伊人亚洲综合成人| 欧美大度的电影原声| 欧美激情五月| 亚洲亚洲精品在线观看| 欧美三级三级三级爽爽爽| 高清国产一区二区三区| 中文字幕精品—区二区四季| 亚洲国产一区二区三区在线播| 亚洲大型综合色站| 欧美电影在线免费观看| 欧美另类亚洲| 亚洲福利一二三区| 精品视频在线免费观看| 99热精品国产| 亚洲一级二级三级| 欧美二区三区的天堂| 欧美精品一级| 无吗不卡中文字幕| 精品欧美久久久| 一本一道久久综合狠狠老精东影业| 免费亚洲电影在线| 久久精品人人爽人人爽| 校园激情久久| 国产·精品毛片| 亚洲精品中文在线影院| 欧美丰满美乳xxx高潮www| 国产精品久久7| 日韩精品亚洲一区| 久久久一区二区三区捆绑**| 午夜在线播放视频欧美| 成人黄色在线视频| 亚洲v中文字幕| 亚洲精品一区二区三区四区高清| 国产精品亚洲产品| av日韩在线网站| 偷拍与自拍一区| 日本一区二区三区久久久久久久久不 | 久久亚区不卡日本| 模特精品在线| 不卡一区二区三区四区| 亚洲bt欧美bt精品777| 26uuuu精品一区二区| 亚洲欧美日韩在线综合| 成人黄页在线观看| 亚洲国产毛片aaaaa无费看| 日韩欧美电影在线| 国产一区二区你懂的| 99久久久免费精品国产一区二区| 一级精品视频在线观看宜春院| 日韩欧美亚洲国产另类| 久久久久国产一区二区| 欧美激情成人在线| 国产在线播放一区| 亚洲综合丁香婷婷六月香| 精品1区2区在线观看| 久久综合中文色婷婷| 欧美激情91| 国产乱码精品一区二区三| 亚洲精品一卡二卡| 日韩女同互慰一区二区| 美女精品一区| 欧美日韩三区四区| 国产一区二区福利视频| 亚洲美腿欧美偷拍| 欧美va亚洲va在线观看蝴蝶网| 久久亚洲欧洲| 黄色成人在线网址| 国产91丝袜在线18| 午夜电影一区二区| 国产精品久久久久久久久免费樱桃 | 先锋影音久久久| 欧美日韩一区自拍| 国产福利一区二区三区视频 | 国产成人在线影院| 天天综合色天天综合| 欧美高清在线一区| 91精品国产综合久久香蕉麻豆| 亚洲一区二区毛片| 在线成人av| 色综合久久综合网97色综合| 国产一区二区福利视频| 日韩中文字幕一区二区三区| 亚洲少妇屁股交4| 久久美女艺术照精彩视频福利播放| 欧美日本国产一区| 久久综合九色综合欧美狠狠| 一级成人国产| 在线看片日韩| 欧美成人一区二免费视频软件| 国产一本一道久久香蕉| 视频一区二区三区中文字幕| 亚洲精品水蜜桃| 亚洲欧美综合色| 国产欧美日韩三级| 亚洲精品一区二区三区99| 91精品国产欧美一区二区成人| 在线观看亚洲a| 亚洲欧美日韩一区在线观看| 欧美日韩精品一本二本三本| 成人久久久精品乱码一区二区三区| 九一九一国产精品| 久久国产欧美日韩精品| 美腿丝袜亚洲三区| 日韩精品视频网| 偷偷要91色婷婷| 五月天精品一区二区三区| 亚洲一区二区欧美日韩| 一区二区三区四区不卡视频| 日韩美女视频一区二区| 国产精品初高中害羞小美女文| 国产日产欧美一区| 国产亚洲福利社区一区| 久久午夜羞羞影院免费观看| 亚洲精品一区二区三区精华液| 欧美v亚洲v综合ⅴ国产v| 欧美成人精品福利| 日韩免费视频线观看| 欧美成人伊人久久综合网| 日韩免费高清视频| 精品欧美一区二区久久| www激情久久| 国产亚洲婷婷免费| 国产免费成人在线视频| 亚洲欧美在线另类| 尤物在线观看一区| 亚洲.国产.中文慕字在线| 日韩高清中文字幕一区| 日本成人中文字幕在线视频| 蜜臀av一区二区三区| 久久99精品久久久久婷婷| 激情综合五月天| 国产高清亚洲一区| a美女胸又www黄视频久久| 99久久er热在这里只有精品15| 欧美在线91| 亚洲无毛电影| 夜夜爽av福利精品导航| 蜜桃av久久久亚洲精品| 在线观看日韩毛片| 欧美日韩国产另类不卡| 日韩一级完整毛片| 久久男人中文字幕资源站| 国产精品素人一区二区| 最新中文字幕一区二区三区| 亚洲一区二区影院| 日韩国产一区二| 精品写真视频在线观看| 粉嫩嫩av羞羞动漫久久久| 成人免费视频视频在线观看免费| 99综合电影在线视频| 欧美日韩喷水| 国产精品久久久久久模特|