
# 了解代码结构
OrgID登录功能Demo的代码结构如[图1]所示。
图1代码结构   
![](https://support.huaweicloud.com/devg-appstage/zh-cn_image_0000001853627921.png)
- deploy_docker为docker部署配置信息。
  ```
  ├─deploy_docker
  │  ├─bin
  │  │      configparser                                
  │  │      start.sh                                    ----服务在服务器上的启动脚本
  │  │      
  │  ├─configtemplate                                  
  │  │      application.properties.tmpl                 ----STS域名及微服务STS证书路径
  │  │      application.yml.tmpl                        ----服务器上环境变量配置信息
  │  │      logback-spring.xml.tmpl                     ----logback日志配置
  │  │      meta.txt                                   
  │  │      
  │  └─resources
  │          index.html                                  ----demo应用的静态页面（登录后的首页欢迎页）
  │          login.html                                  ----demo应用的静态页面（登录页，单击按钮跳转登录）
  ```
  
- lib目录为工程依赖的jar包。
  ```
  ├─lib
  │      cloudsoa-security-1.1.14.101.jar
  │      gpaas-middleware-common-2.2.6.100.jar
  │      nuwa-cloudmap-core-1.0.12.100.jar
  │      nuwa-cloudmap-spring-boot-starter-1.0.12.100.jar
  │      nuwa-core-3.1.5.100.jar
  │      rainbow-core-drds-1.2.18.201.jar
  │      rainbow-proxy-1.2.18.102.jar
  │      spring-cloud-starter-cloudmap-discovery-1.0.12.100.jar
  │      sts-key-sdk-1.1.19.100.jar
  │      sts-sdk-base-1.1.19.100.jar
  │      sts-spring-boot-1.1.19.100.jar
  ```
  
- src目录为项目工程源码目录。
  ```
  └─src
      ├─main
      │  ├─config
      │  │      application.properties                                              ----sts域名及微服务sts证书路径（本地启动时配置）
      │  │      application.yml                                                     ----工程的环境变量配置（本地启动时配置）
      │  │      logback-spring.xml                                                  ----logback日志配置
      │  │      
      │  ├─java
      │  │  └─com
      │  │      └─huawei
      │  │          └─demo
      │  │              │  OrgLogin.java                                           ----项目启动类
      │  │              │  
      │  │              ├─filter
      │  │              │      LogRecordPostFilter.java                            ----接口日志过滤器（打印所有请求的异常信息及请求信息）
      │  │              │      
      │  │              └─loginservice
      │  │                  ├─api
      │  │                  │      UserLoginApi.java                               ----接口api定义
      │  │                  │      
      │  │                  ├─config
      │  │                  │      LoginConfig.java                                ----登录拦截器配置（决定对哪些路径放行）
      │  │                  │      RedisConfig.java                                ----Redis数据库连接工具参数配置
      │  │                  │      RestTemplateConfig.java                         ----RestTemplate，http请求参数配置
      │  │                  │      UserLoginInterceptor.java                       ----拦截器拦截逻辑，对未登录用户进行拦截
      │  │                  │      
      │  │                  ├─controller
      │  │                  │      UserLoginController.java                        ----接口实现controller层
      │  │                  │      
      │  │                  ├─domain
      │  │                  │  │  Constance.java                                  ----常量定义
      │  │                  │  │  
      │  │                  │  └─entity
      │  │                  │          BaseResponse.java                           ----基础响应体定义
      │  │                  │          UserInfo.java                               ----OAuth协议登录后，认证源（OrgID）返回的用户信息
      │  │                  │          
      │  │                  ├─service
      │  │                  │      LoginService.java                               ----接口实现service层
      │  │                  │      
      │  │                  └─utils
      │  │                          ApplicationContextUtil.java                     ----上下文获取工具类
      │  │                          JsonUtils.java                                  ----JsonUtils工具类，json串与对象之间的相互转换
      │  │                          JwtUtil.java                                    ----Jwt工具类，用于生成token、解析token信息
      │  │                          RedisUtil.java                                  ----Redis工具类，对Redis数据库做数据操作
  ```
  
- resources目录，用于存放本地启动时静态资源（欢迎页与登录页html文件），同docker部署时resources目录。
  ```
  │  └─resources
      │      └─templates
      │              index.html
      │              login.html
  ```
  
