0

我在 MVC 中使用 Windows 身份验证。一旦用户第一次通过 Intranet 访问网页,我想将用户的 Active Directory guid 和用户访问该站点的日期时间戳存储到数据库中。

我知道如何从活动目录中获取用户的信息。问题是我应该在哪里放置该方法,以便仅在用户第一次访问该站点时才调用它,而不是在每个页面请求上调用它。

4

1 回答 1

0

我建议创建一个ActionFilter

public class ADUserActionFilterAttribute : ActionFilterAttribute
{
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    // Do database stuff
  }
}

在您的 /App_Start/FilterConfig.cs 中将其添加为全局过滤器:

public class FilterConfig
{
  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  {
    filters.Add(new ADUserActionFilterAttribute());
  }
}

对于任何人的每个请求,您都可以验证用户是否在数据库中(并且可以选择更新他们上次使用网站的时间)。

问题是我应该在哪里放置该方法,以便仅在用户第一次访问该站点时才调用它,而不是在每个页面请求时调用。

此逻辑在 ASP.Net 管道中本机不存在,因此您必须自己创建它。在某些时候,您将不得不去数据库查看记录是否存在。

于 2013-09-05T20:35:04.133 回答