我们的 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”的成员(为了简化问题,我只是检查这个本地组)。