做过后端的比较熟悉,CAP面板有个界面,可以通过域名加cap访问:
但是这个面板直接通过url就可以访问了。
Hangfire Dashboard有自己的面板,可以使用用户名和密码做简单的认证。
LogDashboard也有自己的面板,可以使用用户名和密码做简单的认证。
如下图:
但是CAP的面板是裸露的,没有直接的认证功能。
官方提供了文档,但是没有简单的用户名和密码的认证示例。
https://cap.dotnetcore.xyz/user-guide/zh/monitoring/dashboard/
简单到不知道它在表达什么:
于是只能自己摸索了。
CAP面板引用的包:
DotNetCore.CAP.Dashboard
认证需要另外引用一个包:
Microsoft.AspNetCore.Authentication
然后创建自己的认证处理器:
using System.Net.Http.Headers;
using System.Security.Claims;
using System.Text;
using System.Text.Encodings.Web;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace Extensions
{
/// <summary>
/// 自定义面板认证
/// </summary>
public static class MyAuthDefaults
{
/// <summary>
/// 自定义面板认证-协议名
/// </summary>
public const string Policy = "MyAuthPolicy";
/// <summary>
/// 自定义面板认证-方案名
/// </summary>
public const string Scheme = "MyAuthScheme";
}
/// <summary>
/// 自定义面板认证配置
/// </summary>
public class MyAuthSchemeOptions : AuthenticationSchemeOptions { }
/// <summary>
/// 自定义面板认证处理器
/// </summary>
public class MyAuthHandler : AuthenticationHandler<MyAuthSchemeOptions>
{
/// <summary>
/// 自定义面板认证处理器
/// </summary>
public MyAuthHandler(IOptionsMonitor<MyAuthSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock)
: base(options, logger, encoder, clock)
{
}
/// <summary>
/// 自定义面板认证-验证
/// </summary>
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
AuthenticateResult authResul