sunpengfei
2025-08-04 7c7d0899d5cbf2de57238d845a6a7ef07603ff77
feat:阿里云OSS授权信息
4个文件已添加
2个文件已删除
6个文件已修改
257 ■■■■ 已修改文件
FlexJobApi.Core/FlexJobApi.Core.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApiCoreStartup.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/settings.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Auths/AuthAppService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/FlexJobApi.User.Application.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -17,7 +17,7 @@
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="aliyun-net-sdk-core" Version="1.6.2" />
        <PackageReference Include="aliyun-net-sdk-core" Version="1.5.6" />
        <PackageReference Include="Furion" Version="4.9.7.106" />
        <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.106" />
        <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.7.106" />
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1974,9 +1974,9 @@
            刷新令牌
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetOssSTSQuery">
        <member name="T:FlexJobApi.Core.GetAliyunOSSAcsQuery">
            <summary>
            获取阿里云OSS授权信息
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.DeleteMenuCommand">
@@ -2769,6 +2769,21 @@
            最低级别
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.AliyunOptions">
            <summary>
            阿里云配置
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.AliyunOSSOptions">
            <summary>
            阿里云配置
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.AliyunOSSUtils">
            <summary>
            阿里云OSS工具
            </summary>
        </member>
        <member name="M:FlexJobApi.Core.CollectionUtils.DistinctAdd``1(System.Collections.Generic.List{``0},``0,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            去重添加
FlexJobApi.Core/FlexJobApiCoreStartup.cs
@@ -41,6 +41,8 @@
                options.WithStackFrame = true;
            });
            services.AddConfigurableOptions<AliyunOptions>();
            services.AddComponent<EventBusServiceComponent>();
            services.AddComponent<DistributedCacheServiceComponent>();
FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs
New file
@@ -0,0 +1,29 @@
using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 获取阿里云OSS授权信息
    /// </summary>
    public class GetAliyunOSSAcsQuery : IRequest<GetAliyunOSSAcsQueryResult>
    {
    }
    public class GetAliyunOSSAcsQueryResult
    {
        public string Expiration { get; set; }
        public string OssAccessSecret { get; set; }
        public string OssAccessKeyId { get; set; }
        public string SecurityToken { get; set; }
        public string RequestId { get; set; }
    }
}
FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs
File was deleted
FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
New file
@@ -0,0 +1,44 @@
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Sts;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Furion;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 阿里云OSS工具
    /// </summary>
    public static class AliyunOSSUtils
    {
        public static GetAliyunOSSAcsQueryResult GetOSSAcs()
        {
            var options = App.GetOptions<AliyunOptions>().OSS;
            IClientProfile profile = DefaultProfile.GetProfile(options.RegionId, options.AccessKeyId, options.AccessSecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            AssumeRoleRequest request = new AssumeRoleRequest();
            request.Method = MethodType.POST;
            request.RoleArn = options.RoleArn;
            request.RoleSessionName = options.RoleSessionName;
            request.Policy = options.Policy;
            request.DurationSeconds = options.DurationSeconds;
            AssumeRoleResponse response = client.GetAcsResponse(request);
            var result = new GetAliyunOSSAcsQueryResult()
            {
                Expiration = response.Credentials.Expiration,
                OssAccessKeyId = response.Credentials.AccessKeyId,
                OssAccessSecret = response.Credentials.AccessKeySecret,
                SecurityToken = response.Credentials.SecurityToken,
                RequestId = response.RequestId
            };
            return result;
        }
    }
}
FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs
New file
@@ -0,0 +1,34 @@
using Furion.ConfigurableOptions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 阿里云配置
    /// </summary>
    public class AliyunOptions : IConfigurableOptions
    {
        public AliyunOSSOptions OSS { get; set; }
    }
    /// <summary>
    /// 阿里云配置
    /// </summary>
    public class AliyunOSSOptions
    {
        public string AccessKeyId { get; set; }
        public string AccessSecret { get; set; }
        public string RegionId { get; set; }
        public string Endpoint { get; set; }
        public string BucketName { get; set; }
        public string Url { get; set; }
        public string RoleArn { get; set; }
        public string RoleSessionName { get; set; }
        public string Policy { get; set; }
        public int DurationSeconds { get; set; }
    }
}
FlexJobApi.Core/settings.json
@@ -55,7 +55,16 @@
  },
  "Aliyun": {
    "OSS": {
      "AccessKeyId": "LTAI4GAdJ88mUMMFBHHiyDmS",
      "AccessSecret": "NX3AmjOcGkJ8bncQfIVxqmifBWkI0E",
      "RegionId": "cn-hangzhou",
      "Endpoint": "http://oss-cn-hangzhou.aliyuncs.com",
      "BucketName": "waterdroptest2",
      "Url": "https://waterdroptest2.oss-cn-hangzhou.aliyuncs.com/",
      "RoleArn": "acs:ram::1483797030072898:role/boleoss",
      "RoleSessionName": "SessionTest",
      "Policy": "{\"Version\":\"1\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"oss:PutObject\",\"Resource\":[\"acs:oss:*:*:waterdroptest2/*\",\"acs:oss:*:*:parkmanagement/*\",\"acs:oss:*:*:jurenlian/*\"]}]}",
      "DurationSeconds": 3600
    }
  }
}
FlexJobApi.User.Application/Auths/AuthAppService.cs
@@ -17,6 +17,16 @@
        private readonly IMediator mediator = mediator;
        /// <summary>
        /// 获取阿里云OSS授权信息
        /// </summary>
        /// <returns></returns>
        [AllowAnonymous]
        public Task<GetAliyunOSSAcsQueryResult> GetAliyunOSSAcs()
        {
            return mediator.Send(new GetAliyunOSSAcsQuery());
        }
        /// <summary>
        /// 密码登录
        /// </summary>
        /// <param name="command"></param>
FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs
New file
@@ -0,0 +1,27 @@
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Sts;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using FlexJobApi.Core;
using Furion;
using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.User.Application
{
    /// <summary>
    /// 获取阿里云OSS授权信息
    /// </summary>
    public class GetAliyunOSSAcsQueryHandler : IRequestHandler<GetAliyunOSSAcsQuery, GetAliyunOSSAcsQueryResult>
    {
        /// <inheritdoc/>
        public Task<GetAliyunOSSAcsQueryResult> Handle(GetAliyunOSSAcsQuery request, CancellationToken cancellationToken)
        {
            return Task.FromResult(AliyunOSSUtils.GetOSSAcs());
        }
    }
}
FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs
File was deleted
FlexJobApi.User.Application/FlexJobApi.User.Application.xml
@@ -14,6 +14,13 @@
            认证
            </summary>
        </member>
        <member name="M:FlexJobApi.User.Application.AuthAppService.GetAliyunOSSAcs(FlexJobApi.Core.GetAliyunOSSAcsQuery)">
            <summary>
            获取阿里云OSS授权信息
            </summary>
            <param name="query"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.User.Application.AuthAppService.PasswordLogin(FlexJobApi.Core.PasswordLoginCommand)">
            <summary>
            密码登录
@@ -34,6 +41,14 @@
        <member name="M:FlexJobApi.User.Application.PasswordLoginCommandHandler.Handle(FlexJobApi.Core.PasswordLoginCommand,System.Threading.CancellationToken)">
            <inheritdoc/>
        </member>
        <member name="T:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler">
            <summary>
            获取阿里云OSS授权信息
            </summary>
        </member>
        <member name="M:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler.Handle(FlexJobApi.Core.GetAliyunOSSAcsQuery,System.Threading.CancellationToken)">
            <inheritdoc/>
        </member>
        <member name="F:FlexJobApi.User.Application.EnumUserErrorCodeType.u1000">
            <summary>
            账号或密码不存在