我遇到了一个问题:
我有一个成功登录机制的项目。 我使用Login Control然后编写代码来检查Login Control中的用户和密码是否与DB中的用户和密码匹配。
在匹配对上,会发生这种情况:
if (authenticated)
{
FormsAuthentication.RedirectFromLoginPage(LoginControl.UserName, LoginControl.RememberMeSet);
}
登录后我可以访问/重定向到分隔文件夹中的Members.aspx并使用
<authorization>
<deny users="?"/>
</authorization>
web.config中的我阻止匿名用户访问此文件夹。
但我必须将Members文件夹与Administration文件夹分开。
我在DB的Users表中有额外的列,告诉我用户是否为Admin。
我如何为管理员用户提供额外权限或限制普通登录用户访问管理文件夹?
答案 0 :(得分:1)
如果我理解正确并且上面的代码有效,你可以拒绝这样的某些页面。
<location path="AdminPage.aspx">
<system.web>
<authorization>
<allow roles="Admins" />
<deny users="*" />
</authorization>
</system.web>
</location>
拒绝用户=“*”将拒绝所有人,除非他们有权访问。这是他们中有多少人做的。希望这可以帮助。
然后在登录时,您可以检查该用户是否是管理员。如果是,他们可以访问该页面,如果不是,他们就不能访问。我目前正在使用Active Directory,但您可以使用SQL或Linq to Sql来检查他们是否是管理员。
编辑:这里有一些链接可能会帮助您朝着正确的方向前进。
Link One这个“已过时”,但会告诉你之前的推荐方式。
Link Three这个展示了如何设置SQLMemberShipProvider。
第三个是我建议探索的那个。我在工作中使用ActiveDirectoryMembershipProvider和我的应用程序。我认为这将是你最好的机会。