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

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

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

瀏覽:38日期: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欧美国产| 黄色网一区二区| 国产精品夜夜夜| 日本不卡一区二区三区| 亚洲不卡系列| 久久久久午夜电影| 久久久久久美女精品| 日韩伦理福利| 色老板在线视频一区二区| 欧美日韩精品免费观看视完整| 久久精品伊人| 久久99偷拍| 婷婷亚洲成人| 日韩一区二区三区四区五区| 亚洲精品在线a| 日韩欧美三区| 日韩福利视频网| 亚洲在线观看| 一本色道精品久久一区二区三区| 欧美日韩国产亚洲一区| 婷婷六月综合| 玖玖玖国产精品| 亚洲精品亚洲人成在线观看| 日韩在线电影| 毛片不卡一区二区| 国产成人久久精品一区二区三区| 日产精品一区二区| 国产极品模特精品一二| 卡一精品卡二卡三网站乱码| av免费不卡国产观看| 极品裸体白嫩激情啪啪国产精品| 不卡视频在线| 午夜久久av| 九九久久国产| 福利精品在线| 亚洲伦乱视频| 91超碰国产精品| 日韩高清国产一区在线| 欧美激情视频一区二区三区免费 | 国产精品探花在线观看| 日本在线视频一区二区| 国产日韩中文在线中文字幕| 国精品产品一区| 成人av动漫在线观看| 日韩视频一二区| 久久精品一本| 99成人在线视频| 免费在线观看日韩欧美| 日韩不卡免费视频| 亚洲黄色中文字幕| 亚洲在线电影| 美日韩一区二区三区| 欧美一区三区| 久久精品av麻豆的观看方式| 欧美羞羞视频| 亚洲bt欧美bt精品777| 久久av日韩| 婷婷激情久久| 日韩av一级片| 色老板在线视频一区二区| 色婷婷成人网| 日韩精品看片| 国产午夜久久av| 中文在线а√天堂| 日本中文字幕一区二区| 久久久天天操| 国产精品视频一区二区三区| 日韩av免费| 欧美精品福利| 国产精品日韩久久久| 老色鬼精品视频在线观看播放| aa国产精品| 国产一区二区视频在线看| 亚洲一区二区动漫| 日韩欧美不卡| 日本久久一区| 欧美日韩国产高清| 精品视频在线一区二区在线| 欧美va天堂在线| 欧美日韩a区| 蜜臀av免费一区二区三区| 国产精品美女在线观看直播| 国产亚洲精品久久久久婷婷瑜伽| 精品日本视频| 97久久超碰| 先锋影音国产一区| 日韩欧美精品| 国产精品调教| 亚洲日产国产精品| 亚洲性视频h| 都市激情国产精品| 国产精久久一区二区| 日本成人在线一区| 欧美99久久| 青青伊人久久| 日韩午夜一区| 日本久久成人网| 精品精品99| 久久av网站| 国产麻豆一区二区三区| 亚州欧美在线| 蜜臀精品久久久久久蜜臀| 午夜国产精品视频| 亚洲国内欧美| 99精品一区| 99国产精品免费视频观看| 日韩成人a**站| 精品国产精品国产偷麻豆| 亚洲欧美久久精品| 欧美亚洲国产精品久久| 亚洲日本网址| 成人片免费看| 国产精品麻豆久久| 精品三区视频| 久久久精品国产**网站| 国产精品自拍区| 欧美精品观看| 久久av电影| 国产一区二区三区日韩精品 | 成人三级高清视频在线看| 你懂的国产精品| 国产精品一区二区三区av| 久久激五月天综合精品| 日韩不卡免费视频| 欧美综合社区国产| 欧美精品国产一区| 国产日韩三级| 国内自拍视频一区二区三区| 免费看一区二区三区| 精品国产乱码| 免费一二一二在线视频| 日韩精品网站| 欧美成人久久| 蜜桃视频在线观看一区二区| 亚洲精品看片| 久久精品99久久久| 欧美在线亚洲| 美国三级日本三级久久99 | 亚洲欧洲av| 国产欧美日韩影院| 久久av综合| 欧美aa在线观看| 欧美日韩精品免费观看视频完整| 日韩精品一二三四| 欧美亚洲国产日韩| 国产精选久久| 蜜桃精品在线| 制服诱惑一区二区| 日韩国产在线一| 91欧美日韩在线| 日韩av免费大片| 99视频精品免费观看| 日韩国产欧美在线播放| 久久xxx视频| 欧美日韩激情| 五月激激激综合网色播| 精品国产麻豆| 黑丝美女一区二区| 天堂久久av| 天堂√中文最新版在线| 亚洲3区在线| 亚洲精品电影| 色欧美自拍视频| 国产精品视频一区二区三区| 午夜久久黄色| 日韩一区欧美| 久久久久观看| 日韩av成人高清| 香蕉久久久久久久av网站| 青青青免费在线视频| 国产精品红桃| 四虎精品一区二区免费| 不卡av一区二区| 日韩国产一区| 精品一区电影| 国产精品v日韩精品v欧美精品网站| 久久亚洲二区| 欧美精品一区二区久久| 免费看av不卡| 久久久久九九精品影院| 日韩精品亚洲专区| 亚洲综合图色| av不卡免费看| 午夜精品亚洲| 欧美99久久| 久久中文亚洲字幕| 日韩精品影视| 99久久婷婷这里只有精品| 91亚洲一区| 精品一区二区三区中文字幕视频| 欧美亚洲一区二区三区| 午夜久久av | 精品国产午夜肉伦伦影院| 日本欧美一区二区在线观看| 一区二区三区国产盗摄| 久久国产高清|