我在我的ASP.net MVC应用程序中使用Owin进行身份验证:
app.UseApplicationSignInCookie();
app.UseFormsAuthentication(new FormsAuthenticationOptions()
{
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
ExpireTimeSpan = 64800 /* cookie valid for 48 Days */
});
在我的数据库中,我存储用户的上次登录日期,我使用它将邮件发送给非活动用户 . 如果用户在我的站点上手动登录,我可以轻松更新数据库 . 但是,如果用户拥有“记住我”Cookie集,Owin会自动重新验证用户,并且我从未收到该用户刚刚开始新会话的信号 .
Owin是否会以任何方式成功验证用户后会发生某种事件?我希望这样的样本:
app.OnUserAuthenticated += () => {
var user = HttpContext.Current.User;
/* hooray i am authenticated */
};
2 回答
由于我还没有进入OWIN,我会建议其他的东西 . 您可以在Session_Start事件上连接一些代码,并检查用户是否在那里进行了身份验证 . 如果用户已通过身份验证,您可以继续更新数据库中的信息 .
你为什么不把中间件放在寻找OwinContext.Authentication.User!= null的cookie中间件之后呢?这基本上与您正在寻找的事件相同 .