Dashboard - dotnet-shashlik/shashlik.eventbus GitHub Wiki
Dashboard
Nuget: Shashlik.EventBus.Dashboard
。
配置
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
认证时,用于认证的Secret
,SecretCookieAuthenticate
认证时不可为空。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目前仅支持单节点,分布式支持规划中,敬请期待!