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

做本地网站百度首页入口

做本地网站,百度首页入口,集团培训网站建设,python培训机构哪家好需求:对于本次请求的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.dinnco.com/news/86631.html

相关文章:

  • 音乐主题 wordpress北京建站优化
  • 一个公司的网站怎么做的b站黄页推广
  • win2008做的网站打不开北京seo网络优化招聘网
  • 健身网站模板排名第一的助勃药
  • 网络技术与网站建设互联网推广话术
  • 响应式网站概况seo服务商排名
  • 山西网站建设运营公司域名注册 阿里云
  • 网站转化微信小程序广州今日新闻头条新闻
  • 做的网站怎么进入互联网云资源软文发布平台
  • 南宁网站建公司电话网络推广培训班
  • 做网站项目流程图模板微信朋友圈广告代理
  • 网站服务器免费申请巨量关键词搜索查询
  • 北京改网站百度推广怎么使用教程
  • 泰和网站建设网站seo优化运营
  • 软件app网址怎么找上海百度seo公司
  • 临海高端网站设计新感觉建站公众号运营收费价格表
  • 怎样做直销网站深圳网站建设公司排名
  • 专做进口批发的网站2021拉新推广佣金排行榜
  • 云南网站备案搭建一个网站的流程
  • 安卓市场官方版app下载seo网站优化方案
  • 昆明网站建设首选互维长沙网站推广智投未来
  • 网站建设 需求分析报告自媒体营销的策略和方法
  • 橙子建站是什么东西成人职业技能培训学校
  • 中国室内设计培训排名百度seo标题优化软件
  • 哈尔滨百度关键词优化信息流优化师职业规划
  • 班级设计网站建设sem是什么?
  • 做网站维护的收入怎么确认河北网站seo地址
  • 深圳微信分销网站建设百度网站的域名地址
  • 舞阳专业做网站最新资讯热点
  • phpmysql网站开发笔记要看网的域名是多少