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

什么样是权网站重高的建个微网站多少钱

什么样是权网站重高的,建个微网站多少钱,网页设计资源,加强网站及微信平台建设微服务架构的拆分,各模块之间使用feign组件来进行相互http转发通信。 前端与后端之间使用springcloud的网关来进行协调。 现在问题出现,用户的信息如何进行传递? 前端请求携带请求头,请求头中的authorization为携带的对应token…

微服务架构的拆分,各模块之间使用feign组件来进行相互http转发通信。

前端与后端之间使用springcloud的网关来进行协调。

现在问题出现,用户的信息如何进行传递?

前端请求携带请求头,请求头中的authorization为携带的对应token,这个token如何转发给各个微服务模块?

具体流程:前端发送请求->网关进行解析->从springcloud拦截器的exchange.header中解析出token->将token写入到新的exchange.header中,并且命名为info,这个exchange会被向后传递(因为本身springcloud就有多个拦截器,该拦截器处理完之后会传递给下一个拦截器 )->根据网关解析的端口号,发送request到对应端口的微服务中->微服务的拦截器对request进行拦截(实际上是一个共有模块,各个微服务依赖于这个模块,所以其网络请求会被该模块拦截)->读取传递过来请求头中的info信息,存入threadLocal中。

1.由于所有前端请求都会到达springcloud的拦截器,并且拦截器有多个,只需在拦截器中将需要传递的“info”存进网络请求中,对应的拦截器定义如下:

package com.hxy.hmgateway.filter;import com.hxy.hmgateway.config.AuthProperties;
import com.hxy.hmgateway.utils.JwtTool;
import lombok.RequiredArgsConstructor;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
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.util.AntPathMatcher;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;import java.util.List;@Component
@RequiredArgsConstructor
public class AuthGlobalFilter implements GlobalFilter, Ordered {private final AuthProperties authProperties;private final JwtTool jwtTool;private final AntPathMatcher antPathMatcher = new AntPathMatcher();@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();//放行排除路径String path = request.getPath().toString();if(isExclude(path,authProperties.getExcludePaths())){return chain.filter(exchange);}//1.获取tokenHttpHeaders headers = request.getHeaders();List<String> tokenList = headers.get("authorization");//2.判别token是否为空String token = null;if (tokenList!=null && !tokenList.isEmpty()){token = tokenList.get(0);}//3.获取userIdLong userId = null;//4.判别token是否正确try {userId = jwtTool.parseToken(token);} catch (Exception e) {ServerHttpResponse response = exchange.getResponse();response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();}//TODO userId的转发System.out.println("userId:"+userId);String userInfo = String.valueOf(userId);ServerWebExchange swe = exchange.mutate().request(builder ->builder.header("info", userInfo)).build();//5.放行return chain.filter(swe);}private boolean isExclude(String path, List<String> excludePaths) {for (String pathPattern : excludePaths) {if(antPathMatcher.match(pathPattern, path)) return true;}return false;}@Overridepublic int getOrder() {return 0;}
}

 注意这里的exchange.mutate指令用于将info存储在网络请求中。

2.该拦截器经过springcloud网关转发后,首先到达所有微服务公共依赖的模块,这个模块会使用springmvc拦截器,用于拦截,info,并将其存入threadlocal中。代码如下;

package com.hmall.common.intercepter;import com.hmall.common.utils.UserContext;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class UserInfoInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String info = request.getHeader("info");if (info == null) return true;Long userId = Long.valueOf(info);UserContext.setUser(userId);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {UserContext.removeUser();}
}
package com.hmall.common.config;import com.hmall.common.intercepter.UserInfoInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
@ConditionalOnClass(DispatcherServlet.class)
public class MvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new UserInfoInterceptor());}
}

为了使得其余微服务能够扫描到该共有模块的包,需要将拦截器对应的包添加在如下文件中:

对应的spring.factories文件如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.hmall.common.config.MyBatisConfig,\com.hmall.common.config.MvcConfig,\com.hmall.common.config.JsonConfig

最后需要注意,在mvc配置文件中,添加了一个注解

ConditionalOnClass,用于标记仅对使用了该类的模块生效

文章转载自:

http://EoJruPQf.yzktr.cn
http://RLTSLaZM.yzktr.cn
http://3K1rDK3R.yzktr.cn
http://RU0e5KPo.yzktr.cn
http://yYLt2fWH.yzktr.cn
http://dYTGaBut.yzktr.cn
http://Sr1nLKJv.yzktr.cn
http://w54bV8Cx.yzktr.cn
http://jCgi2gBS.yzktr.cn
http://y5TFmA6T.yzktr.cn
http://nbUx4zoP.yzktr.cn
http://iT0J7AJi.yzktr.cn
http://0bEWfGk9.yzktr.cn
http://DLLDoitm.yzktr.cn
http://pb8XQnSc.yzktr.cn
http://rjuWG2GR.yzktr.cn
http://ViVWKHDa.yzktr.cn
http://Av9WEWfw.yzktr.cn
http://wajQwYwk.yzktr.cn
http://n3sm3rX8.yzktr.cn
http://ofAQPhXm.yzktr.cn
http://FvMp0b5E.yzktr.cn
http://cJsCSUnG.yzktr.cn
http://T8YrCLdN.yzktr.cn
http://SjRsZMtu.yzktr.cn
http://dT4Y4aPQ.yzktr.cn
http://18LSUXfH.yzktr.cn
http://sxLAP0u2.yzktr.cn
http://Tw2yP5FG.yzktr.cn
http://EToUwwHB.yzktr.cn
http://www.dtcms.com/wzjs/662408.html

相关文章:

  • 运城公司网站建设网站建设需要用到哪些技术
  • 南充做网站的公司软件公司网站设计
  • 中国建设信息港网站网站建设优化服务如何
  • a做爰视频免费观费网站河北衡水建设网站公司
  • wordpress建站要用模板吗吉林市网站建设优化
  • 最好的响应式网站有哪些石家庄 网站建设 15369356722
  • 潮州哪里做网站wordpress 批量换
  • html做静态网站苏州网站建设一条龙
  • wordpress获取当前网址关键词怎么优化到百度首页
  • 黑龙江省建设监理协会网站手机网站免费做app
  • 百度搜不倒公司网站wordpress时间插件下载地址
  • 青岛网站建设方案案例商城类网站总体功能策划
  • 东莞建站网站建设产品推广wordpress 外链转内链
  • 高端品牌网站建设建议公司网站建站哪个系统好用
  • 电子商务网站的建设及规划推广小程序拿佣金
  • 校园网站管理系统梅州站改造高铁站
  • 自助建站视频网站建设小程序怎么挂失
  • 嘉兴企业网站模板连锁销售网站制作
  • 深圳网站建设有免费的吗网页制作与网站建设06627
  • 建设手机网站平台江西建设银行分行网站
  • 网站中英文切换怎么做个性化网站开发
  • 做外贸一般去什么网站找客户青岛市区商场黄页
  • 福建省建设相关网站wordpress建一个网站吗
  • 网站积分商城该怎么建立网站建设佛山
  • 大气微电影类网站织梦模板完整版阿里云域名 设置网站
  • 邯郸有设计网站的吗购物网站制作样例
  • 哈尔滨免费自助建站模板北京网站设计引流微信hyhyk1
  • 淘宝客做网站推广比较实用的h5网页建设网站
  • 电子商务网站建设期末试卷答案中英西班牙网站建设
  • 房山营销型网站制作开发如何查看网站的关键词