当前位置: 首页 > news >正文

做的网站适应屏幕大小中国能源建设招标网站

做的网站适应屏幕大小,中国能源建设招标网站,运维工程师,wordpress 用不了矢量需求:对于本次请求的cookie中,如果userType不是vip的身份,不予访问 思路:因为要按照cookie参数进行判断,所以根据官方自带的CookieRoutePredicateFactory进行改造 创建自己的断言类,命名必须符合 xxxRout…

需求:对于本次请求的cookie中,如果userType不是vip的身份,不予访问

思路:因为要按照cookie参数进行判断,所以根据官方自带的CookieRoutePredicateFactory进行改造

  1. 创建自己的断言类,命名必须符合 xxxRoutePredicateFactory 的规范,其中xxx就是配置文件中 predicates 中的key,我的类名是MyRoutePredicateFactory ,所以配置文件中配置的就是 My ,下面图中会标示
  2. 继承统一的抽象类 AbstractRoutePredicateFactory
  3. 完善断言类型(我使用的是官方也使用的短配置 shortcutFieldOrder )、构造方法以及断言逻辑方法 apply
  4. 定义自己的内部配置类 Config ,其中的 nameregexp 就是断言的属性和值(或者正则,本次只判断值是否相等),需注意这里就不敢直接自动生成set和get方法了,因为官方要求的是Config中的属性所使用的set方法必须返回本Config对象,如图:
    在这里插入图片描述

代码如下:

import jakarta.validation.constraints.NotEmpty;
import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory;
import org.springframework.cloud.gateway.handler.predicate.GatewayPredicate;
import org.springframework.http.HttpCookie;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.function.Predicate;/*** 对于请求的cookie中,如果userType不是vip,不予访问*/
@Component
public class MyRoutePredicateFactory extends AbstractRoutePredicateFactory<MyRoutePredicateFactory.Config> {//采用短配置,另外还有一种长展开配置很繁琐public List<String> shortcutFieldOrder() {return Arrays.asList("name", "regexp");}//构造public MyRoutePredicateFactory(){super(MyRoutePredicateFactory.Config.class);}//断言逻辑 public Predicate<ServerWebExchange> apply(MyRoutePredicateFactory.Config config) {return new GatewayPredicate() {public boolean test(ServerWebExchange exchange) {List<HttpCookie> cookies = (List)exchange.getRequest().getCookies().get(config.name);if (cookies == null) {return false;} else {Iterator cookieIterator = cookies.iterator();HttpCookie cookie;do {if (!cookieIterator.hasNext()) {return false;}cookie = (HttpCookie)cookieIterator.next();} while(!config.regexp.equals(cookie.getValue()));return true;}}public Object getConfig() {return config;}public String toString() {return String.format("Cookie: name=%s regexp=%s", config.name, config.regexp);}};}//配置内部类@Validatedpublic static class Config {@NotEmptyprivate String name;@NotEmptyprivate String regexp;public Config() {}public String getName() {return this.name;}public MyRoutePredicateFactory.Config setName(String name) {this.name = name;return this;}public String getRegexp() {return regexp;}public MyRoutePredicateFactory.Config setRegexp(String regexp) {this.regexp = regexp;return this;}}
}

配置文件如图:

在这里插入图片描述

配置代码:

spring:application:name: cloud-gateway #以微服务注册进consulcloud:consul: #配置consul地址host: localhostport: 8500discovery:prefer-ip-address: trueservice-name: ${spring.application.name}gateway:routes:- id: pay_routh1uri: lb://cloud-payment-servicepredicates:- My=userType,VIP

效果:

· cookie中userType不是VIP时,请求不受理:

在这里插入图片描述

· cookie中userType是VIP时,正常查询:

在这里插入图片描述

http://www.yayakq.cn/news/405339/

相关文章:

  • 电商网站活动推广做美食网站的目的和意义
  • dede网站怎么备份喀什建设网站
  • 做图网站被告微信网站建设哪家好
  • 江阴市住房和城乡建设局网站舆情报告2023
  • 外国做电子产品网站有哪些html网站支付链接怎么做的
  • 大型企业网站建设制作wordpress媒体默认链接
  • 站长平台链接提交免费网络营销方式
  • 哪些网站可以做设计软件景区旅游网站平台建设
  • 九江专业网站建设定制建设银行江苏官网招聘网站
  • 怎么才能访问自己做的网站自考
  • 全国教育平台网站建设做婚礼邀请函网站
  • wordpress评论差价上海有什么seo公司
  • 什么网站的注册是动态公司简介通用模板
  • 高邮城乡建设局 网站重庆营销型网站设计
  • 网页版游戏排行榜田田田田田田田田2022年seo最新优化策略
  • 做网站的职位桂林小程序制作
  • cvv钓鱼网站怎么做有效方法的小企业网站建设
  • 有没有教做熟食的网站泰州建设企业网站
  • 企业网站建设可行性青岛大学网站建设
  • 工作室网站源码做网站用jsp还是j2ee
  • 供热设施网站搭建教程企业如何全面开展品牌工程建设
  • 企业服务网站建设方案WORDPRESS如何播放视频
  • 湖北城乡建设网站旅游网站建设的功能定位
  • 如何免费做网站详细点说滑板网页网站设计
  • 平面设计适合女生学吗网站优化推广服务
  • 南阳网站建设培训学校wordpress角色
  • struts2 做的网站游戏网站平台怎么做的
  • 58同城新密网站建设纳溪区城乡住房建设局网站
  • 网站单页在线制作软件山东省山东省建设厅网站首页
  • tq网站建设google官网入口手机版