Asp.net 使用Aspnet角色进行身份验证:应允许访问时拒绝访问

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

我目前正在开发一个用于管理某些数据的Aspnet MVC3 Razor应用程序。对应用程序的访问由使用表单的身份验证控制

我使用ELMAH进行错误捕获,以便在第二次处理它们。Elmah提供位于项目根文件夹中的Elmah.axd模块以查看错误

这些数据必须是私有的,这就是我在web.config文件中编写此规则的原因:

 <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页面,问题是一样的。用户没有得到他们的角色有什么原因吗?