# test **Repository Path**: wsble/test ## Basic Information - **Project Name**: test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-23 - **Last Updated**: 2025-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README # 背景 这是一个单节点的API服务,要考虑部署运维的便捷性。 # 要求 1. WEB API鉴权服务。 ```tex JWT鉴权,本质是自定义鉴权 ``` 1. 提供三个接口。接口文档:`http://localhost:8080/knife4` 1. 登录接口,客户端使用用户名+密码的方式登录。 ``` 接口地址: /api/framework/oauth2/login 接口入参: { "tenantId": "default", "username": "kda.super.admin", "password": "04f95563d5c7189fd69e7f9295a35798976fcdaf90bde30ac3458104075f1ec0991e4b621ce24407709570692963a2e45dba0757bb4b70877e41c560ef3b375046f86ec6c79848fe158371b9495fc1db5d7fb5e55b2100bef6fd6ac9bce4d9bd6055de831b78c8681f4d7b05a6ed858b", "appType": "platform" } ``` 2. 登出接口。 ``` 接口地址: /api/framework/oauth2/logout ``` 3. 心跳接口,每次访问会为token续期。 ``` 接口地址: /api/framework/auth/healthCheck ``` 2. 接口采用HttpHeader("token", "xxxxxxxxxxxxxxxxx")的方式鉴权。 ``` 访问接口时,设置请求头: Token: 访问令牌 X-Token: 刷新令牌 ``` 3. 每个token的有效时间是120s(若连续120s未访问,token失效)。 ``` 配置 appsettings.json 的 JWTSettings:ExpiredTime 节点,单位分钟 举例:如果设置为2,则访问令牌有效期为2分钟,2~4分钟内可以携带刷新令牌进行自动刷新,超过4分钟后则需要再次登录鉴权 ``` 4. 每个用户只能有一个可用token。 ``` 这个做成了用户配置化选项: Contributes.UserContributor.cs 中可查看,设置 MaxSessions 最大会话数量。 举例:如果设置为1,则登录时会踢掉异端在线账号 ``` 5. 当token校验失败时,除了返回token失效外,还应告知具体原因,如:token到期、用户多点登录等。 ``` 有统一鉴权的地方 Core.Auth.Handler.KdaAuthHandler.cs 有业务处理的地方 Manages.User.Impl.UserManage.cs ``` 6. 所有接口,所有情况下都应返回相同结构的json格式,特性数据字段除外。 ``` UnifyResult.Providers.KdaUnifyResultProvider.cs 中可查看,做了统一结果返回值。本质是过滤器处理包了一层。 ``` 7. 可以使用内存模拟数据库。 ``` pg ``` 8. 不限语言、不限框架,用你觉得最合理的方案就行。 ``` .NET8 ```