我无法使用IdentityServer4获取自定义Cookie身份验证处理程序。我正在使用ASP.NET核心身份并遵循官方指南:https://identityserver4.readthedocs.io/en/release/topics/signin.html
我需要覆盖CookieAuthenticationEvents.ValidatePrincipal
和CookieAuthenticationEvents.SignedIn
事件处理程序。
我编写了一个继承CookieAuthenticationEvents
的类,并覆盖了两个事件处理程序。
我通过以下方式将其分配给自定义Cookie处理程序:
var auth = services.AddAuthentication("MyCookies");
auth.AddCookie("MyCookies", options =>
{
options.Events = new RealtimeStatusCookieAuthEvents(Configuration);
});
这是我的代码: https://gist.github.com/Amethi/f3411038a9447d274c0b721698fc5e63
事件处理程序不会触发,即我希望它们为每个请求触发(由于ValidatePrincipal)以及在关闭浏览器并使用cookie身份验证(SignedIn)登录后返回站点时。
任何人都知道我做错了什么?
更新
即使按如下方式简化它也无济于事。事件处理程序不会触发。
var auth = services.AddAuthentication("CustomCookies").AddCookie("CustomCookies", options =>
{
options.Events = new CookieAuthenticationEvents
{
OnSignedIn = context =>
{
Console.WriteLine("{0} - {1}: {2}", DateTime.Now,
"OnSignedIn", context.Principal.Identity.Name);
return Task.CompletedTask;
},
OnValidatePrincipal = context =>
{
Console.WriteLine("{0} - {1}: {2}", DateTime.Now,
"OnValidatePrincipal", context.Principal.Identity.Name);
return Task.CompletedTask;
},
};
});