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

免费网站app哪个好短期培训班学什么好

免费网站app哪个好,短期培训班学什么好,适合新手做网站的,中国建筑人才网是什么网站目录 gateway作用 gateway使用 添加依赖 配置yml文件 自定义过滤器 nacos上的gateway的配置文件 我们现在知道了通过nacos注册服务#xff0c;通过feign实现服务间接口的调用#xff0c;那对于不同权限的用户访问同一个接口#xff0c;我们怎么知道他是否具有访问的权…目录 gateway作用 gateway使用 添加依赖 配置yml文件 自定义过滤器 nacos上的gateway的配置文件 我们现在知道了通过nacos注册服务通过feign实现服务间接口的调用那对于不同权限的用户访问同一个接口我们怎么知道他是否具有访问的权限呢或者我们怎么判断是否用户已经登录了呢这些都可以通过gateway进行实现~ gateway作用 Spring Cloud Gateway是Spring Cloud生态系统中的一员它被设计用于处理所有微服务的入口流量。作为一个反向代理它不仅提供了负载均衡和路由功能还支持灵活的过滤器机制过滤器可以在请求进入网关和离开网关时执行用于处理各种逻辑如身份验证、日志记录和性能监测使得开发者能够定制和扩展其功能。 下图提供了一个关于 Spring Cloud Gateway 如何工作的高层次概述。 客户端向 Spring Cloud Gateway 发出请求。如果Gateway处理程序映射确定一个请求与路由相匹配它将被发送到Gateway Web处理程序。这个处理程序通过一个特定于该请求的过滤器链来运行该请求。过滤器被虚线分割的原因是过滤器可以在代理请求发送之前和之后运行逻辑。所有的 pre 前过滤器逻辑都被执行。然后发出代理请求。在代理请求发出后post 后过滤器逻辑被运行。  gateway使用 添加依赖 !--nacos服务注册发现依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!--网关gateway依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.1.4/version/dependency 配置yml文件 gateway的配置文件其实就是将所有接口配置到web服务中然后通过具体的过滤原则来访问每个接口 其中- Authorizafalse表示是否需要通过token验证这个为我们自定义的一个过滤原则名称的前缀- StripPrefix1为在发送请求时是否需要去掉第一层路径比如/api/user/**如果StripPrefix1表示api需要去掉实际访问的是/user/**接口。 自定义过滤器 AuthorizaGatewayFilterFactory使我们自定义的一个过滤器gateway的自定义过滤器名字是有一定要求的即 “你想取的过滤器名字前缀GatewayFilterFactory”这里以我的为例然后把前缀作为刚刚配置文件的配置进行配置 然后我们实现这个自定义的过滤器 package com.yinan.authorize;import com.alibaba.fastjson.JSONArray; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange;import java.util.Arrays; import java.util.List;Component Slf4j Data ConfigurationProperties(prefix exclude) public class AuthorizaGatewayFilterFactory extends AbstractGatewayFilterFactoryAuthorizaGatewayFilterFactory.Config {/*** 需要放行的授权接口(nacos中的配置文件)*/private String[] path;Autowiredprivate RedisTemplateString, String redisTemplate;/*** 授权token*/private static final String AUTHORIZE_TOKEN Authorization;/****/private static final String AUTHORIZE_IP x-access-ip;/*** 用来标记是否需要授权校验*/private static final String AUTHORIZE_RESOURCE x-access-resource;public AuthorizaGatewayFilterFactory() {super(Config.class);log.info(Loaded GatewayFilterFactory [Authorize]);}Overridepublic ListString shortcutFieldOrder() {return Arrays.asList(enabled);}Overridepublic GatewayFilter apply(Config config) {log.info(你已经进入gateway的过滤器中了----------);return (exchange, chain) - {if (!config.enabled) {return chain.filter(exchange);}ServerHttpRequest request exchange.getRequest();ServerHttpResponse response exchange.getResponse();HttpHeaders headers request.getHeaders();ServerWebExchange build null;// 从header中获取token信息String token headers.getFirst(AUTHORIZE_TOKEN);// 获取用户IPString ip headers.getFirst(AUTHORIZE_IP);log.info(当前访问url request.getURI());if (token null) {response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();}log.info(请求的token为 token);log.info(请求的ip为 ip);if (!.equals(token)) {try {ValueOperationsString, String value redisTemplate.opsForValue();String userid value.get(ip _user_ _userid_ token);System.out.println(userid: userid);String username value.get(ip _user_ _username_ token);String authvalue.get(ip_token_userid);if(authnull){response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();} // 设置请求头ServerHttpRequest host exchange.getRequest().mutate().headers(httpHeaders - {httpHeaders.add(USER-ID, userid);httpHeaders.add(USER-NAME, username);}).build();build exchange.mutate().request(host).build(); // 判断是否需要接口授权校验if (StringUtils.isNotBlank(headers.getFirst(AUTHORIZE_RESOURCE))) {Boolean authority getAuthority(request.getURI().toString(), userid);if (authority) {response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();}} // 黑名单校验 // if (checkBlackList(ip, username)) { // response.setStatusCode(HttpStatus.FORBIDDEN); // return response.setComplete(); // }} catch (Exception e) {e.printStackTrace(); // token无效log.error(出现异常【{}】, e.getMessage());//设置状态码response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();}} //认证通过将用户ID进行传递到下游服务器return chain.filter(build);};}/*** 校验黑名单* param ip* param username* return*/ // private boolean checkBlackList(String ip, String username) { // // }/*** 获取用户权限(接口权限校验)* param url* param userid* return*/private Boolean getAuthority(String url, String userid) {//放行接口不需要做授权校验直接放行for (String path:path) {if(url.indexOf(path)!-1){return false;}}//获取用户权限String resourceredisTemplate.opsForValue().get(userPermission:userid);ListString list JSONArray.parseArray(resource,String.class);for (String res:list) {if(url.indexOf(res)!-1){return false;}}return true;}DataAllArgsConstructorNoArgsConstructorpublic static class Config {/*** 控制是否开启认证*/private boolean enabled;}}如果你看了我之前讲的nacos配置的内容那你应该就能理解以下截图中的意思没有了解过nacos的话建议先去看看以下文章微服务----nacos配置及简单使用 nacos上的gateway的配置文件 management:# 端点检查健康检查endpoints:web:exposure:include: * spring:profiles:active: devcloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:# 处理跨域globalcors:corsConfigurations:[/**]:allowedHeaders: *allowedOrigins: *allowedMethods: *discovery:locator:# false为服务器名不自动匹配true则相反enabled: false# 服务名以小写进行匹配lowerCaseServiceId: trueroutes:# web服务- id: service-1uri: lb://data-serverpredicates:- Path/scriptsContent/**filters:#开启token验证- Authorizatrue- StripPrefix0- id: service-2uri: lb://user-servicepredicates:- Path/api/user/**filters:- Authorizafalse- StripPrefix0#需要放行的授权接口 exclude:path:- /system/dictionary/by- /system/resource/by- /system/role/by- /system/api/user/by- /system/black/by- /oss- /web/article/by- /web/code/bypattern:dateformat: yyyy/MM/dd hh:mm:ss 以上就是我的具体的过滤器实现逻辑但是需要根据你实际的项目代码逻辑对这个过滤器进行修改 。 实现后当前端调用你的接口时会经过gateway网关中的过滤器看看你是否有这个权限进行访问或者是否需需要经过登录后才能访问如果以上都没问题就会放行到下游过滤器继续进行检查如果都没有问题最后就会调用到你的接口~ 以上几篇博文我们大致讲了一下微服务的搭建和使用本人也是最近刚学会微服务对于简单的微服务搭建你可以根据我的这几篇博文进行学习如果版本这些没什么问题是肯定能实现的至于这些技术较深的理解和学习如果你有兴趣可以继续进行专研学习我们共同进步~
http://www.w-s-a.com/news/102340/

相关文章:

  • 做公司网站需要几天深圳自定义网站开发
  • 做网站学多长时间可以学会推广软件公司
  • 网络网站设计培训长沙建站模板大全
  • 站群搭建移动端处理器天梯图
  • 岳池发展建设集团有限公司门户网站湛江seo咨询
  • 手机网站工具关键词排名是什么意思
  • 游民星空是谁做的网站沈阳网站托管公司
  • 做网站搭建需要什么人vs2017移动网站开发
  • 购物网站开发需要什么技术怎么查看网站是否备案
  • 学做电商那个网站好网站建设投票主题
  • 中卫网站推广网络营销毕业设计做网站大小有什么要求
  • 做问卷网站义乌网站建设推广专家
  • 不会编程怎样建设网站昆明做网站哪家
  • 直播网站模板新营销平台电商网站
  • 建设部指定招标网站免费的企业查询软件
  • 做前端常用的网站及软件下载平台优化是什么意思
  • 企石镇仿做网站wordpress 网站白屏
  • 班级网站建设规划书专业定制网红变色杯
  • 上海网站设计公司电话甘肃路桥建设集团有限公司官方网站
  • 哈尔滨网站建设网站开发陕西省建设监理工程协会网站
  • 微信公众号电商网站开发wordpress增加论坛
  • 网站建设视频百度网盘下载免费wordpress搭建
  • 哈尔滨市网站建设公司汕头市公司网站建设平台
  • 东莞网站建设方案外包甘肃两学一做网站
  • 网站建设优化排名推广平面设计职业学校
  • 网后台的网站怎么做网站代理商
  • 网站如何转移到新的空间服务器上手机无人区离线地图app
  • 网站建设模板的买域名做网站的坏处
  • 长春做网站qianceyun做景观素材有哪几个网站
  • 自己建的网站也要注册域名吗邯郸市做网站