Asp.net的表单身份验证
我在Asp.net应用程序上工作,我的应用程序中有4个角色。 1.管理员2.用户3.经销商4.加盟商。而我使用表单身份验证这一切都为单个角色(用户)正常工作。但现在我有4个角色,我没有得到如何管理这个。我有4个文件夹供不同的用户使用。 如果我用经销商帐户登录,如果我更改用户的网址,那么它也允许我访问用户部分。但我不想要这个。我需要在我的应用程序中,用户只能访问他的访问区域。手段如果您的经销商登录,那么他只能访问经销商页面或相同的文件夹没有别的。Asp.net的表单身份验证
请帮我找到这个解决方案。
你需要为你限制访问每个文件夹中的web.config文件只能用“管理员”的角色设置相应的身份验证设置,即
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
将允许访问验证用户。
这里有两件事要看。首先,如果您在web.config中使用<location>
元素,则按角色限制每个文件夹的访问权限应该足够简单。
<location path="Resellers">
<system.web>
<authorization>
<allow roles="Reseller"/>
<deny roles="*"/>
</authorization>
</system.web>
</location>
<location path="Users">
<system.web>
<authorization>
<allow roles="User"/>
<deny roles="*"/>
</authorization>
</system.web>
</location>
...
此外,在您的个人网页,你可以调用IsUserInRole
函数来检查你的用户是否访问页面正确的角色。
你可能想要得到Beginning ASP.NET Security的副本,它有关于如何做到这一点的很好的信息。
不会否认所有角色,然后停止? – Lazarus 2010-12-10 12:22:02
@Lazarus可能......我永远不会记得设置授权元素的所有细节。已经交换了他们。 – PhilPursglove 2010-12-10 12:28:54
我相信他们按照定义的顺序处理:) – Lazarus 2010-12-10 12:32:56
在每个文件夹中,您必须放置一个web.config文件,以限制对相关角色的访问。例如,在转售商文件夹中,您有一个包含以下内容的web.config:
<authorization>
<deny users="*"/>
<allow roles="Resellers"/>
</authorization>
对于其他文件夹等。
不会击中拒绝所有用户并停止? – Lazarus 2010-12-10 12:21:21
使用如下代码:
<location path="Users">
<system.web>
<authorization>
<allow roles="Users"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
您可以使用web.config文件设置权限,或者您也可以得到更精细,装饰要锁定这样的类或方法:
[PrincipalPermissionAttribute(SecurityAction.Demand, Role = @"Administrators")]
所有这些都是您可以设置的角色管理器的一部分。首先阅读this文章,解释做什么。
您不需要拒绝匿名用户。您只需要允许角色和拒绝全部。 – Phill 2010-12-10 12:02:59
确实如此,但确实有一点捷径,为什么尝试在匿名用户上查找角色。 – Lazarus 2010-12-10 12:20:32
只是好奇...为什么投票呢? – Lazarus 2010-12-10 12:23:44