2

我们的 ASP.NET MVC 3 Intranet 应用程序使用 Windows 用户身份验证,并且还要求用户具有特定角色才能访问管理部分(授权)。虽然所有这些都有效,但我们发现检查用户的角色成员身份确实很慢(约 20 秒)。我们使用User.IsInRole方法或AuthorizeAttribute。即使我们检查本地管理员组('BUILTIN\Administrators')而不是 AD 组,它仍然很慢。

现在,为了加快用户授权,我们可以遵循一些推荐的方案吗?例如在数据库中缓存用户的授权状态是否常见?自从授权针对本地组(“管理员”)这么慢以来,是否存在更根本的问题?

编辑:

Web 服务器在 Windows 2008 R2 SP1 x64、.NET 4.0、IIS 7.5、4 GB RAM 上运行。但是,我在我的开发机器上对用户角色成员身份进行了相同的延迟查询,因此看起来问题与运行应用程序的机器无关。我认为 DBMS 应该无关紧要,因为时间花在查询用户是否是“BUILTIN\Administrators”的成员(为了简化问题,我只是检查这个本地组)。

4

1 回答 1

1

在引擎盖下 ASP.NET MVC Windows 用户身份验证与 Web 窗体所做的事情相同。我不知道将框架 MembershipProvider 和 RoleProvider 与 Web 表单或 MVC 一起使用时会出现任何性能问题。为了调试它,我将创建最简单的 Web 窗体(和 MVC)项目,并找出所有时间都花在了哪里。可能是您的 AD 服务器速度较慢,或者第一次身份验证尝试超时。

于 2012-07-25T19:23:20.823 回答