我正在开发一个 ASP.NET MVC 应用程序,我需要记录用户的登录历史。我需要类似于 Stack Overflow 中最后一次看到的东西(我将保留历史记录,我不知道 SO 是否这样做)。我想知道最好的方法是什么?
- Global.asax:Application_AuthenticateRequest、Application_AuthorizeRequest、Session_Start
- Site.Master
任何其他,每个人的优点和缺点?
谢谢
我正在开发一个 ASP.NET MVC 应用程序,我需要记录用户的登录历史。我需要类似于 Stack Overflow 中最后一次看到的东西(我将保留历史记录,我不知道 SO 是否这样做)。我想知道最好的方法是什么?
任何其他,每个人的优点和缺点?
谢谢
我会首先创建一个数据库表来保存登录历史。如果您使用基础项目,那么我将转到 AccountController 的 LogOn 操作并放置代码以在 FormsAuth.SignIn 行之后将记录写入历史记录表。
if (!ValidateLogOn(userName, password))
{
return View();
}
FormsAuth.SignIn(userName, rememberMe);
//*** Write userName to history table *****
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
成员资格提供者公开一个ValidatingPassword事件。我会将我的审计连接到那个而不是在控制器中。为了使这更容易,您可以将其关闭,WebEvent然后使用<heartbeat>您的可用功能web.config来捕获信息,而不必编写任何代码来处理此问题。
另请注意,如果您的目标只是记录一些失败记录,则失败的登录会使用默认配置自动发送到事件日志。
PS:只需重新阅读问题。无论您想以何种方式携带它,Site.Master 都不适合做这样的事情。当您引入第二个母版页时会发生什么?或者,将模板的内容呈现给模板。
我结束这样做:
我将 global.asax 放入 protected void Session_Start() 和授权例程中。