我正在寻找一种在cookie登录后调用函数onPostAuthenticate的方法。
我尝试搜索SignInAsync覆盖,或者在startup.cs中使用委托或lambda来调用我自己的类/函数。
如果我的登录控制器构造函数中的任何事件/代理可以连接,那将会很棒。
public HomeController(UserManager<User> userManager, SignInManager<User> signInManager, AddressbookAppContext AddressbookDb)
{
_userManager = userManager;
_signInManager = signInManager;
//_signInManager.SignInAsync ();
this.AddressbookDb = AddressbookDb;
}
答案 0 :(得分:1)
要查找的地方是CookieAuthenticationOptions中的CookieAuthenticationNotifications。在登录完成后会调用一个OnValidatePrincipal。代码本身是不言自明的。
services.Configure<CookieAuthenticationOptions>(opt =>
{
opt.Notifications = new CookieAuthenticationNotifications
{
OnValidatePrincipal = async (context) =>
{
await Task.Run(() =>
{
if (context.Principal.Identity != null && context.Principal.Identity.IsAuthenticated)
{
SecurityManager SecMan = new SecurityManager(new AddressbookAppContext(Configuration.Get("Data:DefaultConnection:ConnectionString")));
SessionHelper<ContextUser>.Put(context.HttpContext, "LoggedInUser",
SecMan.FetchContextUser(context.Principal.Identity.Name));
// context.HttpContext.Session.SetString("iBoltzTest", "test");
}
else //UnAuthorized
{
//Your code is here
}
});
}
};
opt.LoginPath = PathString.FromUriComponent("/Home/Login");
});