我有一个使用Windows身份验证(Active Directory)安全性的.Net 4.0应用程序。我决定编写自己的处理程序,通过查看页面名称并检查用户是否位于被定义为可以访问该特定页面的正确AD组中来检查用户是否可以访问当前页面。
此应用程序是STRICTLY Intranet应用程序,只能在我们的公司域中运行。
我只是使用:“System.Web.HttpContext.Current.User.IsInRole”。
如果用户在群组中,我正常进行。如果用户不在该组中,我会将用户重定向到“无法访问”页面。
我的问题是......每次页面加载时我都会检查(IsInRole)(在PageLoad()中,我的所有页面都调用一个方法来验证用户对页面的每次加载时... )
您如何建议我提高效率? (我想在调用验证码之前我至少可以进行一次“!PostBack”测试,是吗?)使用Sessions变量和/或Cookies怎么样?
非常感谢任何建议!
P.S。 - 我过去曾使用会员提供商并考虑将其用于此应用程序,但我决定反对它。我想要做的是非常简单,我真的不想把我的数据库或代码与所有会员提供的东西混在一起。
答案 0 :(得分:1)
您使用的是母版页吗?
如果是这样,请在母版页的Page_Load中调用您的身份验证,它将使用您的母版页级联到任何内容页面。
答案 1 :(得分:1)
一个想法是使用web.config like here的授权部分。
另一种选择是从基类(类型为Page)派生你的所有页面,这些基类在Init方法中执行你的IsInRoleCheck,这样你就不会忘记忘记,而且你不必在整个页面上重复代码