Asp.net 使用Aspnet角色进行身份验证:应允许访问时拒绝访问
我目前正在开发一个用于管理某些数据的Aspnet MVC3 Razor应用程序。对应用程序的访问由使用表单的身份验证控制 我使用ELMAH进行错误捕获,以便在第二次处理它们。Elmah提供位于项目根文件夹中的Elmah.axd模块以查看错误 这些数据必须是私有的,这就是我在web.config文件中编写此规则的原因:Asp.net 使用Aspnet角色进行身份验证:应允许访问时拒绝访问,asp.net,asp.net-mvc,asp.net-mvc-3,razor,forms-authentication,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,Forms Authentication,我目前正在开发一个用于管理某些数据的Aspnet MVC3 Razor应用程序。对应用程序的访问由使用表单的身份验证控制 我使用ELMAH进行错误捕获,以便在第二次处理它们。Elmah提供位于项目根文件夹中的Elmah.axd模块以查看错误 这些数据必须是私有的,这就是我在web.config文件中编写此规则的原因: <location path="elmah.axd"> <system.web> <httpHandlers> <add v
<location path="elmah.axd">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<authorization>
<allow roles="Dev"/>
<deny users="*" />
</authorization>
</system.web>
此代码允许处于“dev”角色(在我的aspnet_usersinroles表中)的用户拒绝所有其他用户
但是,如果我与一个具有此角色的用户登录,则对该页面的访问将被拒绝
如果我允许同一用户使用用户授权(见下文),我可以毫无问题地访问该页面
<allow users="yohann.pansard@gmail.com"/>
我检查了我的Aspnet_usersinroles表好几次,一切都很好
我的roleManager看起来不错,因为我在应用程序中使用了相同的角色(例如Role.IsUserInRoles(“foo”,“reader”))。以下是我的角色管理器的配置:
<roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="AspNetSqlRoleProvider">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="app_demo" />
</providers>
</roleManager>
我认为角色不属于用户,但我不确定。可能吗
我可能忘了什么,但我不知道这个元素是什么
有人能帮我吗?请查看这些链接,了解如何保护Elmah+您的配置
<elmah>
<security allowRemoteAccess="true" />
</elmah>
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<authorization>
<allow roles="Dev" />
<deny users="*" />
</authorization>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on using ASP.NET authorization securing ELMAH.
<authorization>
<allow roles="Dev" />
<deny users="*" />
</authorization>
-->
</system.web>
在appsetting标记下。您还应该更新正确的值
<appSettings>
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.allowedRoles" value="Dev" />
</appSettings>
在applicationwide system.web部分的网络配置中有什么?在applicationwide system.web部分中是否有deny user=“*”?非常感谢。感谢您的回复。我试过了,但问题没有解决。我不认为elmah配置有问题,因为我尝试了一个简单的html页面,问题是一样的。用户没有得到他们的角色有什么原因吗?