diff --git a/CoreCms.Net.Configuration/AppSettingsConstVars.cs b/CoreCms.Net.Configuration/AppSettingsConstVars.cs
index 6c50f7a8..a9a34ebb 100644
--- a/CoreCms.Net.Configuration/AppSettingsConstVars.cs
+++ b/CoreCms.Net.Configuration/AppSettingsConstVars.cs
@@ -144,6 +144,25 @@ namespace CoreCms.Net.Configuration
public static readonly string WeiXinAppSecret = AppSettingsHelper.GetContent("WeChatOptions", "WeiXinAppSecret");
+ #endregion
+
+ #region Swagger授权访问设置================================================================================
+ ///
+ /// Swagger文档默认访问路由地址
+ ///
+ public static readonly string SwaggerRoutePrefix = AppSettingsHelper.GetContent("SwaggerConfig", "RoutePrefix");
+
+ ///
+ /// Swagger文档登录账号
+ ///
+ public static readonly string SwaggerUserName = AppSettingsHelper.GetContent("SwaggerConfig", "UserName");
+
+ ///
+ /// Swagger文档登录密码
+ ///
+ public static readonly string SwaggerPassWord = AppSettingsHelper.GetContent("SwaggerConfig", "PassWord");
+
+
#endregion
}
diff --git a/CoreCms.Net.Middlewares/MiddlewareHelpers.cs b/CoreCms.Net.Middlewares/MiddlewareHelpers.cs
index 1427de5d..fb178a43 100644
--- a/CoreCms.Net.Middlewares/MiddlewareHelpers.cs
+++ b/CoreCms.Net.Middlewares/MiddlewareHelpers.cs
@@ -82,5 +82,16 @@ namespace CoreCms.Net.Middlewares
return app.UseMiddleware(dataSources);
}
+
+ ///
+ /// Swagger授权中间件
+ ///
+ ///
+ ///
+ public static IApplicationBuilder UseSwaggerAuthorizedMildd(this IApplicationBuilder app)
+ {
+ return app.UseMiddleware();
+ }
+
}
}
diff --git a/CoreCms.Net.Middlewares/SwaggerBasicAuthMiddleware.cs b/CoreCms.Net.Middlewares/SwaggerBasicAuthMiddleware.cs
new file mode 100644
index 00000000..dba15bea
--- /dev/null
+++ b/CoreCms.Net.Middlewares/SwaggerBasicAuthMiddleware.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+using CoreCms.Net.Configuration;
+using Microsoft.AspNetCore.Http;
+
+namespace CoreCms.Net.Middlewares
+{
+ ///
+ /// Swagger授权登录拦截
+ ///
+ public class SwaggerBasicAuthMiddleware
+ {
+
+ private readonly RequestDelegate next;
+ public SwaggerBasicAuthMiddleware(RequestDelegate next)
+ {
+ this.next = next;
+ }
+ public async Task InvokeAsync(HttpContext context)
+ {
+ var path = "/" + AppSettingsConstVars.SwaggerRoutePrefix;
+
+ if (context.Request.Path.StartsWithSegments(path))
+ {
+ string authHeader = context.Request.Headers["Authorization"];
+ if (authHeader != null && authHeader.StartsWith("Basic "))
+ {
+ // Get the credentials from request header
+ var header = AuthenticationHeaderValue.Parse(authHeader);
+ var inBytes = Convert.FromBase64String(header.Parameter);
+ var credentials = Encoding.UTF8.GetString(inBytes).Split(':');
+ var username = credentials[0];
+ var password = credentials[1];
+
+ var swaggerUserName = AppSettingsConstVars.SwaggerUserName;
+ var swaggerPassWord = AppSettingsConstVars.SwaggerPassWord;
+
+ // validate credentials
+ if (!string.IsNullOrEmpty(swaggerUserName) && !string.IsNullOrEmpty(swaggerPassWord) && username.Equals(swaggerUserName) && password.Equals(swaggerPassWord))
+ {
+ await next.Invoke(context).ConfigureAwait(false);
+ return;
+ }
+ }
+ context.Response.Headers["WWW-Authenticate"] = "Basic";
+ context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
+ }
+ else
+ {
+ await next.Invoke(context).ConfigureAwait(false);
+ }
+ }
+
+
+
+ }
+}
diff --git a/CoreCms.Net.Web.WebApi/Program.cs b/CoreCms.Net.Web.WebApi/Program.cs
index cb992870..5c8faf53 100644
--- a/CoreCms.Net.Web.WebApi/Program.cs
+++ b/CoreCms.Net.Web.WebApi/Program.cs
@@ -190,6 +190,8 @@ app.UseRequestResponseLog();
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Api.ToString());
// 记录ip请求 (注意开启权限,不然本地无法写入)
app.UseIpLogMildd();
+// Swagger授权登录拦截
+app.UseSwaggerAuthorizedMildd();
#endregion
//强制显示中文
diff --git a/CoreCms.Net.Web.WebApi/appsettings.json b/CoreCms.Net.Web.WebApi/appsettings.json
index 0edf2fb8..35a7bb4b 100644
--- a/CoreCms.Net.Web.WebApi/appsettings.json
+++ b/CoreCms.Net.Web.WebApi/appsettings.json
@@ -13,6 +13,12 @@
"Login": "CoreShopProfessional",
"PassWord": "uzmp0oq9wfbdeasygj647vr53"
},
+ //Swagger授权访问设置
+ "SwaggerConfig": {
+ "RoutePrefix": "doc", //路由地址,默认doc
+ "UserName": "",
+ "PassWord": ""
+ },
"AppConfig": {
"AppUrl": "https://admin.test.pro.coreshop.cn/", //后端管理地址
"AppPcUrl": "https://pc.test.pro.coreshop.cn/", //PC端访问地址