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

网站存在的问题沈阳网站建设教案模板

网站存在的问题,沈阳网站建设教案模板,免费注册网站,iphone手机网站建设文章目录 一、前言二、gateway鉴权1、依赖配置2、编写代码3、GlobalFilter详解3.1、GlobalFilter简介3.2、GlobalFilter自定义执行顺序3.2.1、实现Order接口实现自定义执行顺序 一、前言 网关是介于客户端和服务器端之间的中间层#xff0c;所有的外部请求都会先经过 网关这一… 文章目录 一、前言二、gateway鉴权1、依赖配置2、编写代码3、GlobalFilter详解3.1、GlobalFilter简介3.2、GlobalFilter自定义执行顺序3.2.1、实现Order接口实现自定义执行顺序 一、前言 网关是介于客户端和服务器端之间的中间层所有的外部请求都会先经过 网关这一层。也就是说API 的实现方面更多的考虑业务逻辑而安全、性能、监控可以交由 网关来做这样既提高业务灵活性又不缺安全性。 RBAC基于角色访问控制目前使用最为广泛的权限模型。相信大家对这种权限模型已经比较了解了。此模型有三个用户、角色和权限在传统的权限模型用户直接关联加了角色解耦了用户和权限使得权限系统有了更清晰的职责划分和更高的灵活度 二、gateway鉴权 1、依赖配置 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId /dependency !--redis-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency !--json-- dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion${fastjson.version}/version /dependency2、编写代码 Order(1) Component public class AuthorizationFilter implements GlobalFilter {Autowiredprivate AuthConfig myConfig;Autowiredprivate AuthService authService;Autowiredprivate RedisUtil redisUtil;Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpResponse response exchange.getResponse();JSONObject message new JSONObject();ServerHttpRequest request exchange.getRequest();//1、获取请求路径String path request.getPath().toString();//处理白名单内不需要进行拦截的地址if(!Objects.isNull(myConfig.getWhiteList())){for (String whitePath : myConfig.getWhiteList()) {if(path.contains(whitePath)){return chain.filter(exchange);}}}//获取对应的tokenString token request.getHeaders().getFirst(Authorization);//判断传递了token才可以继续解析if(!StringUtils.isEmpty(token)){try {//先去本地redis根据token获取valueString userPhoneRedis redisUtil.getTokenKey(token);//如果没有查到或者过期时间小于10分钟则去权限获取信息权限会进行token续约if (Objects.isNull(userPhoneRedis) || redisUtil.getExpire(userPhoneRedis) 600) {String userIdauthService.checkToken(token);//如果校验token成功if(null!userId){//缓存到redis中一段时间内都不用校验token了//token为key用户id为value,存储7200秒2小时redisUtil.set(token,userId,7200);//放行继续向下调用return chain.filter(exchange);}}else{return chain.filter(exchange);//放行继续向下调用}}catch (Exception e){//拦截请求返回状态码401message.put(status, -1);message.put(data, 鉴权失败);byte[] bits message.toJSONString().getBytes(StandardCharsets.UTF_8);DataBuffer buffer response.bufferFactory().wrap(bits);response.setStatusCode(HttpStatus.UNAUTHORIZED);//指定编码否则在浏览器中会中文乱码response.getHeaders().add(Content-Type, text/plain;charsetUTF-8);return response.writeWith(Mono.just(buffer));}}message.put(status, -1);message.put(data, 鉴权失败);byte[] bits message.toJSONString().getBytes(StandardCharsets.UTF_8);DataBuffer buffer response.bufferFactory().wrap(bits);response.setStatusCode(HttpStatus.UNAUTHORIZED);//指定编码否则在浏览器中会中文乱码response.getHeaders().add(Content-Type, text/plain;charsetUTF-8);return response.writeWith(Mono.just(buffer));} }3、GlobalFilter详解 3.1、GlobalFilter简介 GlobalFilter是Spring Cloud Gateway中用于过滤请求的组件它可以在请求与路由匹配时将所有的GlobalFilter和特定的GatewayFilter添加到过滤器链中然后按照org.springframework.core.Ordered接口排序执行。 GlobalFilter具有与GatewayFilter相同的签名因此可以在处理请求之前和之后执行一些操作例如检查请求头、修改请求参数、验证权限等。在实现GlobalFilter接口时需要实现filter方法该方法接受一个WebExchange作为参数。 在Spring Cloud Gateway中有一些默认的GlobalFilter例如ForwardRoutingFilter和RouteToRequestUrlFilter它们分别用于将请求转发到当前网关实例本地接口和将请求路由到指定的URL。 当请求与路由匹配时过滤web处理程序会将GlobalFilter的所有实例和GatewayFilter的所有路由特定实例添加到过滤器链中。这个组合过滤器链由org.springframework.core.Ordered接口排序您可以通过实现getOrder()方法来设置该接口值越小,越先执行。由于Spring Cloud Gateway区分了过滤器逻辑执行的“pre”和“post”阶段优先级最高的过滤器是“pre”阶段的第一个“post”的最后一个。 3.2、GlobalFilter自定义执行顺序 在gateway模块中有多个GlobalFilter时你可以通过实现Ordered接口或者使用Order注解来指定每个GlobalFilter的执行顺序。order值越小优先级越高执行顺序越靠前。 如果多个GlobalFilter的order值一样会按照默认的顺序执行这个默认顺序是defaultFilter 路由过滤器 GlobalFilter。 例如在我的网关模块中有两个自定义的GlobalFilter一个用于做跨域处理一个用户做权限鉴权我们需要指定它们的执行顺序优先应该走权限鉴权的假如你都没有权限去请求服务那么就不需要再去考虑当前请求是否跨域了。以上图片展示是通过Order的方式实现的GlobalFilter自定义执行顺序 3.2.1、实现Order接口实现自定义执行顺序 import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; Component public class CustomGlobalFilter implements GlobalFilter, Ordered { Override public MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 在请求处理之前执行一些操作 // ... // 继续执行下一个过滤器或路由处理程序 return chain.filter(exchange); } Override public int getOrder() { // 返回该过滤器的优先级值值越小优先级越高 return 1; } }这个示例中我们创建了一个名为CustomGlobalFilter的类它实现了GlobalFilter和Ordered接口。在filter()方法中我们可以执行一些在请求处理之前需要执行的操作。getOrder()方法返回该过滤器的优先级值这里我们返回了1表示该过滤器将优先执行。
http://www.w-s-a.com/news/129406/

相关文章:

  • 电子商务网站开发设计报告为什么wordpress主题中字体不统一
  • 百度站长快速收录网站建设完工确认书
  • 企业网站备案代理商建设工程施工合同2013
  • 要学做网站wordpress xss漏洞
  • 白云品牌型网站建设在网上做国际快递淘宝网站
  • 无锡网站建设方式推广软件赚钱的app
  • 如何控制一个网站软件开发wordpress教育插件
  • 网站开发属于软件开发类吗wordpress邮件失败
  • 凡科网站怎么设计win8网站模板
  • 深圳整站seo个人网站建设一般流程
  • 济南网站中企动力wordpress主题ripro
  • 淮北网站建设求职简历怎么做点击图片进网站
  • 自适应网站推广注册公司流程和费用公司注册
  • 电子商务网站建设预算表网站建设卩金手指科杰
  • 广西响应式网站哪家好产品网络推广怎样做
  • 移动网可以上的网站是什么样子的淘宝优惠券网站开发
  • wordpress php设置伊宁seo网站建设
  • 兰陵住房建设局网站wordpress中文标题
  • 福州搜索优化网站个人网页网站制作模板
  • 网站开发分哪几个步骤使用wordpress开发一个页面跳转
  • 网站制作后还能更改么wordpress 近期文章 代码
  • 做一个小网站需要多少钱wordpress集成paypal
  • 加强网站建设管理 及时更新自己设计装修的app
  • 集团网站设计案例网页制作网站开发
  • 怎么优化网站的单个关键词排名惠州品牌网站建设
  • 上海跨境电商网站制作wordpress弃用react
  • phpcms网站模版下载电商网站建设属于研发费用吗
  • 动画毕业设计代做网站高校门户网站建设需要多少钱
  • 网站内链设置wordpress前台特别慢
  • 杭州模板网站建设系统江苏省建设考试网站准考证打印