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

怎么用电脑自带软件做网站页面做编程网站有哪些

怎么用电脑自带软件做网站页面,做编程网站有哪些,商城网站开发教程,软件开发合同模板免费目录 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.hkea.cn/news/14547805/

相关文章:

  • 建设网站文献软件工程考研难度大吗
  • 怎样做淘宝网站建设注册规划师报考条件2022
  • HTML asp 网站桂林山水网页制作
  • 网站丢失了怎么办wordpress 菜单两列显示
  • 网站添加漂浮二维码怎么做如何查看网站开发者
  • html制作音乐网站代码竞价广告推广
  • seo外推旺道网站优化
  • 制作深圳网站建设东营有能做网站优化
  • 搜索引擎营销的特征成都seo整站
  • 重新做网站网站后台管理系统怎么添加框
  • 北京做网站哪家公司好重庆网站优化软件
  • php租车网站北京市建设工程信息网ic卡
  • 苏州哪个公司做网站好教育学会网站建设项目
  • 海外注册域名的网站设计 p网站
  • 外贸网站如何做推广苏州企业运营模式有哪些
  • 制作网页的工具主要有哪些南京seo关键词优化服务
  • 怎样做班级网站wordpress有广告插件
  • 东莞竞价推广seo推广排名
  • 惠州城乡建设部网站遵义网站制作的网站
  • 网站分页导航企业网站搭建项目概述范文
  • 网站建设升级的必要性电子商务官方网站建设
  • 珠海网站制作套餐wordpress防采集
  • 怎么做网站关键字WordPress主题站
  • 哪些网站的登陆界面做的好看门户网站开发注意哪些
  • 网站设计的意义开发网站如何赚钱
  • 医院网站建设官网爱站网seo工具
  • iis打开网站变成下载如何建设一个视频网站
  • 找个人给我做电影网站个人怎么做微信公众号和微网站
  • cpanel 子网站微信公众平台人工电话
  • 成都网站建设金网科技西安网站漏洞