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

住房和建设部网站首页找公司做网站怎么图片都要自己找

住房和建设部网站首页,找公司做网站怎么图片都要自己找,网络技术开发包括哪些内容,网站开发目的意义过滤器模式#xff08;Filter Pattern#xff09;或标准模式#xff08;Criteria Pattern#xff09;是一种设计模式#xff0c;这种模式允许开发人员使用不同的标准来过滤一组对象#xff0c;通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式…        过滤器模式Filter Pattern或标准模式Criteria Pattern是一种设计模式这种模式允许开发人员使用不同的标准来过滤一组对象通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式它结合多个标准来获得单一标准。 业务场景每次请求通过网关需要验证请求头是否携带 tokensign签名等 类图 AuthService所有滤器类都必须实现的接口 AuthTokenServiceImplToken验证过滤器 AuthSignServiceImpl签名验证过滤器 AuthFactory过滤器工厂利用SpringBoot功能特性实现自动获取过滤器 AuthDTO过滤器所需要的参数 AuthGatewayFilterFactory权限校验过滤器gateway AuthService /*** Author: wmh* Description: 权限校验过滤器* Date: 2023/8/3 18:19* Version: 1.0*/ public interface AuthService {/*** Description: 过滤方法* Param authDTO: 网关上下文* return: String* Author: wmh* Date: 2023/8/3 18:12*/String apply(AuthDTO authDTO);}返回值可以定义为统一返回值R等为了演示方便就返回字符串了 AuthTokenServiceImpl import cn.hutool.core.util.StrUtil; import cn.hutool.jwt.JWT; import cn.hutool.jwt.JWTUtil; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service;/*** Author: wmh* Description: token校验* Date: 2023/8/3 18:21* Version: 1.0*/ Slf4j Order(0) Service public class AuthTokenServiceImpl implements AuthService {/*** Description: 验证token* Param authDTO: 网关上下文* return: com.norinaviation.atm.common.base.data.R* Author: wmh* Date: 2023/8/3 19:31*/OverrideSneakyThrowspublic String apply(AuthDTO authDTO) {String tokenHeader authDTO.getHeaders().getFirst(CommonConstant.X_TOKEN);if (StrUtil.isBlank(appId)) {return appId不能为空;}if (StrUtil.isBlank(tokenHeader)) {return TOKEN不能为空;}JWT jwt JWTUtil.parseToken(tokenHeader);boolean verifyKey jwt.setKey(CommonConstant.JWT_TOKEN.getBytes()).verify();// 验证token是否正确if (!verifyKey) {log.info(appId:{}, TOKEN auth fail, TOKEN:{}, appId, tokenHeader);return TOKEN认证失败;}boolean verifyTime jwt.validate(0);// 验证token是否过期if (!verifyTime) {log.info(appId:{}, TOKEN expired, TOKEN:{}, appId, tokenHeader);return TOKEN已过期;}return success;}} AuthSignServiceImpl import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service; /*** Author: wmh* Description: 验签校验* Date: 2023/8/3 18:24* Version: 1.0*/ Slf4j Order(1) Service public class AuthSignServiceImpl implements AuthService {/*** Description: 验证签名* Param authDTO: 网关上下文* return: Stirng* Author: wmh* Date: 2023/8/3 19:30*/OverrideSneakyThrowspublic Stirng apply(AuthDTO authDTO) {// 签名逻辑业务代码就不公开了return success;}}AuthFactory import cn.hutool.core.util.ObjectUtil; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component;import java.util.*;/*** Author: wmh* Description: 权限工厂* Date: 2023/8/7 15:54* Version: 1.0*/ Component public class AuthFactory implements ApplicationContextAware {/*** 过滤方式*/private ListAuthService authFilters new ArrayList();/*** 获取应用上下文并获取相应的接口实现类* param applicationContext* throws BeansException*/Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {// 获取实现类MapInteger, AuthService authServiceMap new HashMap();applicationContext.getBeansOfType(AuthService.class).values().stream().forEach(authService - {if (ObjectUtil.isNull(authService.getClass().getAnnotation(Order.class))) {authServiceMap.put(CommonConstant.DEFAULT_ORDER, authService);}else {authServiceMap.put(authService.getClass().getAnnotation(Order.class).value(), authService);}});// 根据order排序authServiceMap.entrySet().stream().sorted(Comparator.comparing(e - e.getKey())).forEach(map - {authFilters.add(map.getValue());});}/*** Description: 是否全部符合过滤条件* Param authDTO: 网关上下文* return: String* Author: wmh* Date: 2023/8/3 19:27*/public String apply(AuthDTO authDTO) {for (AuthService filter : authFilters) {String str filter.apply(authDTO);if (!StrUtil.equals(str, success)) {return str;}}return success;}}AuthDTO import lombok.Data; import org.springframework.http.HttpHeaders; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap;/*** Author: wmh* Description: 网关上下文* Date: 2023/8/3 19:09* Version: 1.0*/ Data public class AuthDTO {/*** cache headers*/private HttpHeaders headers;/*** cache json body*/private String cacheBody;/*** cache formdata*/private MultiValueMapString, String formData new LinkedMultiValueMap();}此类为gateway网关需要只展示使用过滤链的代码块 AuthGatewayFilterFactory /*** Author: wmh* Description: 权限校验过滤器* Date: 2023/8/3 19:15* Version: 1.0*/ Slf4j Component public class AuthGatewayFilterFactory extends AbstractGatewayFilterFactory {Autowiredprivate AuthFactory authFactory;Overridepublic GatewayFilter apply(Config config) {return (exchange, chain) - {ServerHttpRequest serverHttpRequest exchange.getRequest();...// 获取request bodyGatewayContext gatewayContext exchange.getAttribute(GatewayContext.CACHE_GATEWAY_CONTEXT);AuthDTO authDTO new AuthDTO();authDTO.setHeaders(gatewayContext.getHeaders());authDTO.setCacheBody(gatewayContext.getCacheBody());authDTO.setFormData(gatewayContext.getFormData());// 验证String strr authFactory.apply(authDTO);...return chain.filter(exchange);};}} Gateway相关SpringCloud-Gateway实现网关_springcloud配置网关_W_Meng_H的博客-CSDN博客网关作为流量的入口常用的功能包括路由转发、权限校验、限流等Spring Cloud 是Spring官方推出的第二代网关框架由WebFluxNettyReactor实现的响应式的API网关它不能在传统的servlet容器工作也不能构建war包。基于Filter的方式提供网关的基本功能例如说安全认证、监控、限流等。_springcloud配置网关https://blog.csdn.net/W_Meng_H/article/details/129775851 CommonConstant常量类 /*** Author: wmh* Description: 常用变量* Date: 2023/3/30 10:29* Version: 1.0*/ Component public class CommonConstant {// JWT密钥public static String JWT_TOKEN;// 请求头中的tokenpublic static final String X_TOKEN X-TOKEN;// 请求头中的签名public static final String X_SIGN X-SIGN;// 请求头中的appIdpublic static final String X_APPID X-APPID;// 请求头中的时间戳public static final String X_TIMESTAMP X-TIMESTAMP;}
http://www.hkea.cn/news/14517977/

相关文章:

  • 学校网站开发灵宝网站建设
  • wordpress dux 高亮沈阳关键字优化
  • 如何做网站链接分析seo优化一般包括哪些内容()。
  • 室内设计模拟app丹阳网站怎么做seo
  • 网站开发方案案例现在去成都需要隔离吗?
  • 建设银行网站注册不了一般通过 什么意思
  • 深圳制作网站主页百度推广入口
  • WordPress网站修改重庆建网站公司
  • 郑州网站建设优化哈尔滨php网站开发公司
  • 建设网站服务器端环境要求泰安网页设计公司
  • php网站开发兼容怎么设置产品销售型企业网站有哪些
  • 如何外贸网站推广wordpress视差插件
  • 电子产品去什么网站做站点wordpress镜像是什么意思
  • 视频直播点播网站建设青岛网站建设邓巴迪
  • 崇左网站搭建北京seo公司有哪些
  • 怎么往公司网站添加网站二维码链接怎么做
  • 江西科技学校网站建设中文wordpress网站模板
  • 自己在公司上班做网站宣传 侵权吗wordpress4.9.8 特别慢
  • 建设网站选什么地方的主机长沙谷歌seo
  • 网站推广视频的服务方案建设银行境外购物网站
  • 物流公司网站源码专业做视频的网站有哪些内容
  • 湘西吉首市建设局网站太原seo关键词优化
  • 南通百度网站快速优化腾讯云快速建站
  • 网页设计与网站建设连接数据库网站名称注册程序
  • 公司网站建设包含的内容欢迎页面设计模板
  • 北京手机版建站系统开发中国数学外国人做视频网站
  • 旅行网站开发贵阳网站建设公司招聘
  • 河北通信建设有限公司网站自网站EXCel数据导入怎么做
  • 网站百度终端适配代码影视公司网页设计
  • seo网站内部优化方案2017年做网站维护总结