1.app登录-用户微服务搭建
(1)用户微服务模块创建在哪?
(2)用户微服务所需要依赖是在哪配置?
(3)用户微服务包结构是哪些?
(4)用户微服务的nacos注册与配置
2.微服务中模块如何引用另一模块功能
(1)模块的pom.xml文件中引入另一个模块功能配置
<dependency> <groupId>com.heima</groupId> <artifactId>heima-leadnews-common</artifactId> </dependency>
(2)被引用模块配置文件spring.factoies中加入相应自动配置注入和配置类位置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.heima.common.exception.ExceptionCatch,\ com.heima.common.swagger.SwaggerConfig,\ com.heima.common.swagger.Swagger2Config
3.微服务网关搭建
(1)在微服务父模块网关下创建子模块appGateway
创建配置文件bootstrap.yml文件,配置端口,nacos注册和配置地址
server: port: 5061 spring: application: name: leadnews-app-gateway cloud: nacos: discovery: server-addr: 192.168.200.130:8848 config: server-addr: 192.168.200.130:8848 file-extension: yml
nacos进行跨域配置和路由配置
spring:
cloud:
gateway:
globalcors:
add-to-simple-url-handler-mapping: true
corsConfigurations:
'[/**]':
allowedHeaders: "*"
allowedOrigins: "*"
allowedMethods:
- GET
- POST
- DELETE
- PUT
- OPTION
routes:
# 用户微服务
- id: user
uri: lb://leadnews-user
predicates:
- Path=/user/**
filters:
- StripPrefix= 1
(2)微服务网关自定义登录认证过滤器
创建过滤器类加上主机@Componet
类实现接口Ordered,Global,重写方法
public class AuthFilter implements Ordered, GlobalFilter
@Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); ServerHttpResponse response = exchange.getResponse(); if(request.getURI().getPath().contains("/login")) { return chain.filter(exchange); } String token = request.getHeaders().getFirst("token"); if(StringUtils.isBlank(token)) { response.setStatusCode(HttpStatus.UNAUTHORIZED); return response.setComplete(); } Claims claims = AppJwtUtil.getClaimsBody(token); int i = AppJwtUtil.verifyToken(claims); try { if(i == 1 || i == 2) { response.setStatusCode(HttpStatus.UNAUTHORIZED); return response.setComplete(); } } catch (Exception e) { e.printStackTrace(); response.setStatusCode(HttpStatus.UNAUTHORIZED); return response.setComplete(); } return chain.filter(exchange); } @Override public int getOrder() { return 0; }