1

我正在开发一个 ASP.NET MVC 应用程序,我需要记录用户的登录历史。我需要类似于 Stack Overflow 中最后一次看到的东西(我将保留历史记录,我不知道 SO 是否这样做)。我想知道最好的方法是什么?

  • Global.asax:Application_AuthenticateRequest、Application_AuthorizeRequest、Session_Start
  • Site.Master

任何其他,每个人的优点和缺点?

谢谢

4

3 回答 3

2

我会首先创建一个数据库表来保存登录历史。如果您使用基础项目,那么我将转到 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");
        }
于 2009-06-11T11:51:51.810 回答
2

成员资格提供者公开一个ValidatingPassword事件。我会将我的审计连接到那个而不是在控制器中。为了使这更容易,您可以将其关闭,WebEvent然后使用<heartbeat>您的可用功能web.config来捕获信息,而不必编写任何代码来处理此问题。

另请注意,如果您的目标只是记录一些失败记录,则失败的登录会使用默认配置自动发送到事件日志。

PS:只需重新阅读问题。无论您想以何种方式携带它,Site.Master 都不适合做这样的事情。当您引入第二个母版页时会发生什么?或者,将模板的内容呈现给模板。

于 2009-06-11T12:08:17.293 回答
1

我结束这样做:

我将 global.asax 放入 protected void Session_Start() 和授权例程中。

于 2009-06-12T14:02:15.233 回答