为CAP面板添加简单的Authentication登录验证功能 C#|.net

终于搞定了CAP Dashboard的登录验证功能!

因为网上找不到简单的CAP Dashboard的登录验证功能,所以这个功能摸索着开发了好久。

这个Authentication认证功能,不仅适用于CAP面板,也适用于懒得开发登录页面,但是又需要简单用户名密码登录的网页。

做过后端的比较熟悉,CAP面板有个界面,可以通过域名加cap访问:

但是这个面板直接通过url就可以访问了,完全没有任何账号保护,任何人知道url地址就可以直接访问!

Hangfire Dashboard有自己的面板,可以使用用户名和密码做简单的认证。

LogDashboard也有自己的面板,可以使用用户名和密码做简单的认证。

如下图:

但是CAP的面板是直接暴露的,没有直接的认证功能,知道url就可以直接进入!

虽然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>
 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 12:06:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 12:06:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 12:06:04       87 阅读
  4. Python语言-面向对象

    2024-06-13 12:06:04       96 阅读

热门阅读

  1. 【杂记-浅谈缺省VLAN】

    2024-06-13 12:06:04       34 阅读
  2. c++【入门】小明的游泳时间

    2024-06-13 12:06:04       30 阅读
  3. 41、Flink 的默认窗口触发器 EventTime 代码示例

    2024-06-13 12:06:04       28 阅读
  4. Scope of use of industrial cleaning machines

    2024-06-13 12:06:04       31 阅读
  5. 【无标题】

    2024-06-13 12:06:04       32 阅读
  6. torch.squeeze() dim=1 dim=-1 dim=2

    2024-06-13 12:06:04       32 阅读
  7. Trusty qemu + android环境搭建详细步骤

    2024-06-13 12:06:04       30 阅读
  8. Apache Flink 如何保证 Exactly-Once 语义

    2024-06-13 12:06:04       36 阅读
  9. mysql 相关

    2024-06-13 12:06:04       29 阅读
  10. Eclipse项目导入笔记大全&踩坑大全

    2024-06-13 12:06:04       84 阅读
  11. ARCGIS进行视域分析及地形图制作

    2024-06-13 12:06:04       32 阅读
  12. CPython源码学习5:字节对象

    2024-06-13 12:06:04       26 阅读