java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

前期准备工作完成后,现在开始搭建项目,今天主要完成项目的搭建和基本功能的调试。

网关

工程结构

java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

@Component
@Log4j2
public class StockRequestGlobalFilter implements GlobalFilter, Ordered {
    

    /**
     * 通过filter来自定义配置转发信息
     * @param exchange
     * @param chain
     * @return
     */
    @Override
    public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String authentication = exchange.getRequest().getHeaders().getFirst("Authorization");
        if(!StringUtil.isNullOrEmpty(authentication)){
            log.info("enter stockRequestGlobalFilter filter method: " + authentication);
            exchange.getRequest().mutate().header("Authorization",authentication);
        }
        return chain.filter(exchange.mutate().build());
    }

    @Override
    public int getOrder() {
        return -1000;
    }
}


网关配置:

server:
  port: 10680

spring:
  application:
    name: stock-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        service: stock-gateway
    gateway:
      discovery:
        # 允许通过服务名称进行路由转发访问, http://service-id/user
        locator:
          enabled: true
      # 路由配置
      routes:
        - id: stock-user
          uri: lb://stock-user
          predicates:
            - Path=/user/**
        - id: trade-auth
          uri: lb://trade-auth
          predicates:
            # - Method=GET,POST  不要开启此项
            - Path=/oauth/**
logging:
  level:
    root: info

经过实践摸索,如果网关只是转发,按照我们OAUTH2的设计方案, Spring Cloud Gateway 可以不用集成Spring Security。网关的职责就是接收客户端的请求并进行转发, 所以鉴权可以不用放置在网关, 各微服务直接作为资源服务进行认证,也可以避免微服务直接对外暴露产生的安全问题, 在这里学习如何通过Gateway转发请求, 实现OAuth2的认证。

用户服务

server:
  port: 10681
spring:
  application:
    name: stock-user
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        # Sentinel管理后台的连接配置
        dashboard: 127.0.0.1:8858
      datasource:
        # 用户的降级规则配置:
        user-degrade:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: sentinel-user-degrade
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: degrade
        #用户限流的规则配置:
        user-flow:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: sentinel-user-flow
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
  # 数据源配置, 采用Druid
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root12349876
    url: jdbc:mysql://106.14.250.251:3306/trade_stock?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    druid:
      # 连接池的配置信息
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      maxActive: 20
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall,log4j
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      # 配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow:
        # IP黑名单 (存在共同时,deny优先于allow)
        deny:
        #  禁用HTML页面上的“Reset All”功能
        reset-enable: false
        # 登录名
        login-username: admin
        # 登录密码
        login-password: admin123
        # 监控后台开关, 开启可通过后台管理查看
        enabled: true
## spring security 配置
security:
  oauth2:
    resource:
      loadBalanced: true
      token-info-uri: http://trade-auth/oauth/check_token
    client:
      client-id: app
      client-secret: app
      scope: server
      access-token-uri: http://trade-auth/oauth/token
      user-authorization-uri: http://trade-auth/oauth/authorize

#mybatis 配置
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
    auto-mapping-behavior: full
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations:
    - classpath:com/itcast/bulls/stock/user/dao/mapper/*.xml
    - classpath:com/itcast/bulls/stock/common/system/dao/mapper/*Mapper.xml
  global-config:
    # 逻辑删除配置
    db-config:
      # 删除前
      logic-not-delete-value: 1
      # 删除后
      logic-delete-value: 0

主要是stat-view-servlet下面配置:

url-pattern是配置监控台的访问地址。

allow是允许哪些IP进行访问。

deny是IP黑名单, 优先级高于allow。

reset-enable是复位功能, 谨慎使用。

login-username是登陆了用户名。

login-password是登陆密码。

enabled是监控台的启用开关, 此项一定要开启。

启动服务即可访问, 把用户服务启动, 访问地址: http://127.0.0.1:10681/druid/index.html


java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现


oauth服务

项目结构

java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

申请token

新建一个请求, 输入地址: 127.0.0.1:9999/oauth/token


java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

选择认证方式, 填入Client的用户与密码信息,非t_trade_user信息。


java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

填入grant_type, 认证模式; username和password对应t_trade_user表信息,scope作用域对应client用户的scope, 不能填错。

java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

采用post和get方式请求都可以, 返回结果可以看到有两部分, 一部分是内置的token信息, 另外一部分就是我们自定义增强的token扩展信息。


java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

刷新token, 地址不变, 需要传递refresh_token, 这个在申请token时可以拿到, grant_type类型要设置为refresh_token。


java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

刷新成功, 和上面申请的token值发生了变化, access_token已重新生成。

sentinel

http://106.14.250.251:8858/#/dashboard/home 账号密码:sentinel

现在主要配置限流和降级规则,规则配置在nacos

java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

sentinel如果部署到服务器上,本地启动项目时无法实时监控到的。
原因:Sentinel的监控需要双方互发包进行健康校验等实现监控,而阿里云ECS服务器无法ping通主机ip,导致出错

用户注册


java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现

公司表,部门表配置好后,用户保存即可成功

java微服务实战项目股票项目搭建,网关会员统一登陆基本功能实现


接下来完成权限管理功能

展开阅读全文

页面更新:2024-05-12

标签:网关   项目   数据源   路由   基本功能   规则   密码   地址   功能   股票   用户   会员   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top