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

网站建设用什么软件好怎么做加密货币网站

网站建设用什么软件好,怎么做加密货币网站,网站正在建设中 模板 下载,详情页在线设计网站推荐目录 一、网关路由 1.1.认识网关 1.2.快速入门? 1.2.1.引入依赖 1.2.2.配置路由 二、网关登录校验 2.1.Gateway工作原理 ?2.2.自定义过滤器 2.3.登录校验 2.4.微服务获取用户 2.4.1.保存用户信息到请求头 2.4.2.拦截器获取用户? ?2.5.OpenFeign传递用户 三、…

目录

一、网关路由

1.1.认识网关

1.2.快速入门?

1.2.1.引入依赖

1.2.2.配置路由

二、网关登录校验

2.1.Gateway工作原理

?2.2.自定义过滤器

2.3.登录校验

2.4.微服务获取用户

2.4.1.保存用户信息到请求头

2.4.2.拦截器获取用户?

?2.5.OpenFeign传递用户

三、配置管理

3.1.配置共享

?3.2.拉取配置共享

3.2.1.引入依赖

3.2.2.创建bootstrap.yaml

3.3.配置热更新

3.3.1.添加配置到Nacos

?编辑?3.3.2.配置热更新

3.4.动态路由

四、总结


一、网关路由

1.1.认识网关

网关就是络的口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由****和转发以及数据安全的校验。前端请求不能直接访问微服务,而是要请求网关:

  • 网关可以做安全控制,也就是登录身份校验,校验通过才放行

  • 通过认证后,网关再根据请求判断应该访问哪个微服务,将请求转发过去

1.2.快速入门

1.2.1.引入依赖
        <!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--nacos discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--负载均衡--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
1.2.2.配置路由
server:port: 8080
spring:application:name: gatewaycloud:nacos:server-addr: 192.168.150.101:8848gateway:routes:- id: item-service # 路由规则id,自定义,唯一uri: lb://item-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务- Path=/items/**,/search/** # 这里是以请求路径作为判断规则- id: cart-serviceuri: lb://cart-servicepredicates:- Path=/carts/**

id:建议和微服务名保持一致

uri:路由目标

lb:负载均衡://服务名称

predicates:路由断言

- Path:以路径做匹配

二、网关登录校验

2.1.Gateway工作原理

  1. 客户端请求进入网关后由HandlerMapping对请求做判断,找到与当前请求匹配的路由规则(Route),然后将请求交给WebHandler去处理。

  2. WebHandler则会加载当前路由下需要执行的过滤器链(Filter chain),然后按照顺序逐一执行过滤器(后面称为Filter)。

  3. 图中Filter被虚线分为左右两部分,是因为Filter内部的逻辑分为prepost两部分,分别会在请求路由到微服务之前和之后被执行。

  4. 只有所有Filterpre逻辑都依次顺序执行通过后,请求才会被路由到微服务。

  5. 微服务返回结果后,再倒序执行Filterpost逻辑。

  6. 最终把响应结果返回。

2.2.自定义过滤器

网关过滤器链中的过滤器有两种:

  • GatewayFilter:路由过滤器,作用范围比较灵活,可以是任意指定的路由Route.

  • GlobalFilter:全局过滤器,作用范围是所有路由,不可配置。

2.3.登录校验

自定义GlobalFilter完成登录校验

自定义登录校验过滤器

 public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//1、获取请求头ServerHttpRequest request = exchange.getRequest();//2.判断是否不需要拦截if (isExclude(request.getPath().toString())) {return chain.filter(exchange);}//3.获取tokenList<String> headers = request.getHeaders().get("authorization");String token = null;if (headers != null && !headers.isEmpty()) {token = headers.get(0);}//4.解析校验tokenLong userId = null;try {userId = jwtTool.parseToken(token);} catch (UnauthorizedException e) {//拦截,设置响应状态码ServerHttpResponse response = exchange.getResponse();response.setRawStatusCode(401);return response.setComplete();}//System.out.println("userId = " + userId);//保存用户到请求头String userInfo = userId.toString();ServerWebExchange swe = exchange.mutate().//mutate 对下游请求做更改request(builder -> builder.header("user-info", userInfo)).build();//6.放行return chain.filter(swe);}

2.4.微服务获取用户

2.4.1.保存用户信息到请求头
        //保存用户到请求头String userInfo = userId.toString();ServerWebExchange swe = exchange.mutate().//mutate 对下游请求做更改request(builder -> builder.header("user-info", userInfo)).build();
2.4.2.拦截器获取用户
/*** 拦截器,获取用户保存到ThreadLocal*/
public class UserInfoInterceptor implements HandlerInterceptor {//在controller执行之前运行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {//1.获取用户信息String userInfo = request.getHeader("user-info");//2.将用户信息保存到ThreadLocalif (StrUtil.isNotBlank(userInfo)) {UserContext.setUser(Long.valueOf(userInfo));}//3.放行,只获取用户信息,不做拦截return true;}//清理用户@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {UserContext.removeUser();}
}

配置拦截器

@Configuration
@ConditionalOnClass(DispatcherServlet.class)
public class MvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new UserInfoInterceptor());}
}

不过,需要注意的是,这个配置类默认是不会生效的,因为它所在的包是com.hmall.common.config,与其它微服务的扫描包不一致,无法被扫描到,因此无法生效。

基于SpringBoot的自动装配原理,我们要将其添加到resources目录下的META-INF/spring.factories文件中:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=

com.hmall.common.config.MyBatisConfig,
com.hmall.common.config.MvcConfig

2.5.OpenFeign传递用户

利用RequestTemplate类来添加请求头,将用户信息保存到请求头中。这样以来,每次OpenFeign发起请求的时候都会调用该方法,传递用户信息。

    @Beanpublic RequestInterceptor UserInfoRequestInterceptor() {return requestTemplate -> {Long userId = UserContext.getUser();if (userId != null) {requestTemplate.header("user-info", userId.toString());}};}

三、配置管理

3.1.配置共享

我们可以把微服务共享的配置抽取到Nacos中统一管理,这样就不需要每个微服务都重复配置了。分为两步:

  • 在Nacos中添加共享配置

  • 微服务拉取配置

3.2.拉取配置共享

3.2.1.引入依赖
  <!--nacos配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--读取bootstrap文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>
3.2.2.创建bootstrap.yaml
spring:application:name: cart-service # 服务名称profiles:active: devcloud:nacos:server-addr: 192.168.150.101 # nacos地址config:file-extension: yaml # 文件后缀名shared-configs: # 共享配置- dataId: shared-jdbc.yaml # 共享mybatis配置- dataId: shared-log.yaml # 共享日志配置- dataId: shared-swagger.yaml # 共享日志配置

3.3.配置热更新

3.3.1.添加配置到Nacos

dataId格式:[服务名]-[spring.active.profile].[后缀名]

文件名称由三部分组成:

  • 服务名:购物车服务,所以是cart-service

  • spring.active.profile:就是spring boot中的spring.active.profile,可以省略,则所有profile共享该配置

  • 后缀名:例如yaml

3.3.2.配置热更新

创建属性读取类

@Data
@Component
@ConfigurationProperties(prefix = "hm.cart")
public class CartProperties {private Integer maxAmount;
}

3.4.动态路由

四、总结

http://www.dtcms.com/a/563940.html

相关文章:

  • 电商网站主题网站正在建设中 打不开怎么办
  • dw制作简单网站模板下载河北省住建厅电子证书查询
  • 网站吸引力想找人做公司网站要注意什么
  • 一个好的网站建设网站建设项目需求书
  • 介绍自己做的网站在线查企业
  • 信息技术八年级上册网站建设菏泽做网站的公司
  • 园林景观设计案例网站扬州推广公司
  • 网站模板图徐州市制作网站
  • 潍坊网站制作招聘wordpress怎么添加ico
  • 权4网站怎么做网站开发教程 视频
  • 北海网站设计公司网络营销专业课
  • 手机网站 尺寸百度网站提交收录入口
  • 商赢网站建设南宁网站开发建设
  • 织梦网站上传及安装网站视频下载方法
  • 南昌专业的企业网站开发公司百度竞价点击软件
  • jsp网站建设项目建设银行人力资源网站
  • 咸宁建设网站哪里有网站设计公司
  • 公司网站域名过期旅游网页设计模板图凡科
  • 招聘网站建设维护美容培训东莞网站建设
  • 杭州工业设计班级优化大师官方网站
  • 南宁建设银行官网招聘网站宣讲家网站生态文明建设
  • wpf做网站专业网站建设网站设计
  • 书店网站建设方案江苏住建厅特种作业证
  • 怎么制作网站上传视频宿迁北京网站建设
  • 旅游电商网站排名东莞网站建设 胶粘包装材料
  • 网站域名服务错误服务器网络
  • 化妆品网站制作需要百度手机浏览器下载
  • 做外贸网站那个平台好ui设计现在好找工作吗
  • 东营做网站tt0546企业网站有哪些类型
  • wordpress 整站打包wordpress在哪里改首页关键词标题