Skip to content

Dashboard

CAP 原生提供了 Dashboard 供查看消息,利用 Dashboard 提供的功能可以很方便的查看和管理消息。

使用限制

Dashboard 只支持在 ASP.NET Core 中使用,不支持控制台应用(Console App)

启用 Dashboard

首先,你需要安装Dashboard的 NuGet 包。

PM> Install-Package DotNetCore.CAP.Dashboard

然后,在配置中添加如下代码:

services.AddCap(x =>
{
    //...

    // Register Dashboard
    x.UseDashboard();
});

默认情况下,你可以访问 http://localhost:xxx/cap 这个地址打开Dashboard。

Dashboard 配置项

  • PathBase

默认值:N/A

当位于代理后时,通过配置此参数可以指定代理请求前缀。

  • PathMatch

默认值:'/cap'

你可以通过修改此配置项来更改Dashboard的访问路径。

  • StatsPollingInterval

默认值:2000 毫秒

此配置项用来配置Dashboard 前端 获取状态接口(/stats)的轮询时间

  • AllowAnonymousExplicit

Default: true

显式允许对 CAP 仪表板 API 进行匿名访问,当启用ASP.NET Core 全局授权筛选器请启用 AllowAnonymous。

  • AuthorizationPolicy

Default: null.

Dashboard 的授权策略。 需设置 AllowAnonymousExplicit为 false。

自定义认证

从版本 8.0.0 开始,CAP 仪表板利用 ASP.NET Core 身份验证机制,允许通过自定义授权策略和 ASP.NET Core 身份验证和授权中间件进行扩展,以授权仪表板访问。 有关 ASP.NET Core 身份验证内部结构的更多详细信息,请查看官方文档.

您可以在示例项目 Sample.Dashboard.Auth中查看示例代码。

Example: 匿名访问

services.AddCap(cap =>
    {
        cap.UseDashboard(d =>
        {
            d.AllowAnonymousExplicit = true;
        });
        cap.UseInMemoryStorage();
        cap.UseInMemoryMessageQueue();
    });

Example: Open Id

services
    .AddAuthorization(options =>
        { 
            options.AddPolicy(DashboardAuthorizationPolicy, policy => policy
                .AddAuthenticationSchemes(OpenIdConnectDefaults.AuthenticationScheme)
                .RequireAuthenticatedUser());
        })
        .AddAuthentication(opt => opt.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie()
        .AddOpenIdConnect(options =>
        {
            ...
        });

    services.AddCap(cap =>
    {
        cap.UseDashboard(d =>
        {
            d.AuthorizationPolicy = DashboardAuthorizationPolicy;
        });
        cap.UseInMemoryStorage();
        cap.UseInMemoryMessageQueue();
    });

Example: 自定义认证 Scheme

const string MyDashboardAuthenticationPolicy = "MyDashboardAuthenticationPolicy";

services.AddAuthorization(options =>
    { 
        options.AddPolicy(MyDashboardAuthenticationPolicy, policy => policy
        .AddAuthenticationSchemes(MyDashboardAuthenticationSchemeDefaults.Scheme)
        .RequireAuthenticatedUser());
    })
    .AddAuthentication()
    .AddScheme<MyDashboardAuthenticationSchemeOptions, MyDashboardAuthenticationHandler>(MyDashboardAuthenticationSchemeDefaults.Scheme,null);

services.AddCap(cap =>
    {
        cap.UseDashboard(d =>
        {
            d.AuthorizationPolicy = MyDashboardAuthenticationPolicy;
        });
        cap.UseInMemoryStorage();
        cap.UseInMemoryMessageQueue();
    });