记录用户登录ASP.NET MVC应用程序

时间:2009-06-10 13:15:04

标签: asp.net-mvc authentication audit

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

  • Global.asax:Application_AuthenticateRequest,Application_AuthorizeRequest,Session_Start
  • 的Site.Master

任何其他人,每个人的利弊?

由于

3 个答案:

答案 0 :(得分: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");
        }

答案 1 :(得分:2)

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

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

PS:重新阅读这个问题。无论你想要携带它,Site.Master都是做错的地方。当你介入第二个母版页时会发生什么?或者,向模板渲染模板的内容。

答案 2 :(得分:1)

我结束了这样做:

我在protected void Session_Start()和授权例程中输入了global.asax。