Dashboard - dotnet-shashlik/shashlik.eventbus GitHub Wiki

Dashboard

Nuget: Shashlik.EventBus.Dashboard

dashboard

demo->

配置

    builder.Services.AddEventBus()
    .AddMySql<DataContext>()
    .AddMemoryQueue()
    .AddDashboard(options =>
    {
        // 指定认证类
        // options.UseAuthenticate<SecretCookieAuthenticate>();
        // 使用Secret认证
        options.UseSecretAuthenticate("<your secret>");
    })
    // .AddDashboard() 无需认证
    // .AddDashboard(options => options.AuthenticateProvider = null;) 无需认证

    
    // after var app = builder.Build(); app.UseRouting();
    app.UseEventBusDashboard();

配置项EventBusDashboardOption

  • DefaultUrlPrefix:路由前缀,默认值/eventBus
  • AuthenticateProvider:认证提供类,默认值null,需要实现IEventBusDashboardAuthentication接口,可以使用默认提供的Secret认证,null不需要认证。
  • AuthenticateSecret:使用SecretCookieAuthenticate认证时,用于认证的SecretSecretCookieAuthenticate认证时不可为空。
  • AuthenticateSecretCookieName:使用SecretCookieAuthenticate认证时,用于存储Cookie认证的名称,默认值shashlik-eventbus-secret
  • AuthenticateSecretCookieOptions:使用SecretCookieAuthenticate认证时,Cookie的配置选项提供函数,默认仅配置过期时间2个小时。

SecretCookieAuthenticate

一个默认提供的基于Cookie的Secret认证,进入Dashboard页面时,首先检查Cookie值是否有效,无效则认证通过,无效则跳转至Secret认证页面,认证成功将使用DataProtection将Secret进行加密后存储在Cookie中。

DataProtection仅使用默认配置,如果您的应用是分布式的,应该考虑分布式场景下的DataProtection的配置,例如使用Redis或者EfCore来存储密钥链,更多关于DataProtection的存储配置详见官方文档

Cookie默认仅设置过期时间2个小时,希望进一步提高Cookie安全,防止CSRF攻击的,可以配置SameSite = SameSiteMode.Strict

    .AddDashboard(options =>
    {
        // 指定认证类
        // options.UseAuthenticate<SecretCookieAuthenticate>();
        // 使用Secret认证
        options.UseSecretAuthenticate("<your secret>", null,  _ => new CookieOptions
        {
            Expires = DateTimeOffset.Now.AddHours(2),
            // 使用严格模式禁止三方跳转使用Cookie
            SameSite = SameSiteMode.Strict
        });
    })

NOTE

Dashboard目前仅支持单节点,分布式支持规划中,敬请期待!