首页 文章

检测Owin中的登录以更新数据库

提问于
浏览
2

我在我的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 回答

  • 0

    由于我还没有进入OWIN,我会建议其他的东西 . 您可以在Session_Start事件上连接一些代码,并检查用户是否在那里进行了身份验证 . 如果用户已通过身份验证,您可以继续更新数据库中的信息 .

  • 0

    你为什么不把中间件放在寻找OwinContext.Authentication.User!= null的cookie中间件之后呢?这基本上与您正在寻找的事件相同 .

相关问题