我在 MVC 中使用 Windows 身份验证。一旦用户第一次通过 Intranet 访问网页,我想将用户的 Active Directory guid 和用户访问该站点的日期时间戳存储到数据库中。
我知道如何从活动目录中获取用户的信息。问题是我应该在哪里放置该方法,以便仅在用户第一次访问该站点时才调用它,而不是在每个页面请求上调用它。
我在 MVC 中使用 Windows 身份验证。一旦用户第一次通过 Intranet 访问网页,我想将用户的 Active Directory guid 和用户访问该站点的日期时间戳存储到数据库中。
我知道如何从活动目录中获取用户的信息。问题是我应该在哪里放置该方法,以便仅在用户第一次访问该站点时才调用它,而不是在每个页面请求上调用它。
我建议创建一个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 管道中本机不存在,因此您必须自己创建它。在某些时候,您将不得不去数据库查看记录是否存在。