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> 账号或密码不存在