1

出于某种原因,我无法指定应该允许访问错误日志的角色。无论我输入什么角色(我有 Admin、Super 和 Test 角色),我的应用程序都会重定向到登录屏幕,这是我未获得授权的预期行为。如果我选择允许带有 * 的所有角色,它工作得很好,但是当我需要将其限制为超级角色时允许所有角色。

我的 web.config 文件中有以下内容,允许在登录时访问所有角色:

<add key="loginUrl" value="~/Login/" />
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.route" value="elmah" />

但是当我将 allowedRoles 行更改为:

<add key="elmah.mvc.allowedRoles" value="Super" />

它不允许任何人访问,只是将他们发送到登录屏幕。

任何想法将不胜感激。这是我第一次尝试使用 Elmah,它看起来非常好,但我对它还不是很熟悉,所以如果有人需要更多信息来提供帮助,我会提供。

编辑

我现在已经将 Emlah 配置为使用 SQL Server 记录错误,不确定这是否会对任何潜在的答案产生影响。

4

3 回答 3

1

你试过这个(来自如何保护 Elmah.axd?):

<configuration>
  ...
  <location path="elmah.axd">
    <system.web>
      <authorization>
        <allow roles="Administrators"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>
于 2013-05-16T14:07:48.857 回答
0

我在使用 Elmah 1.2 时遇到了类似的问题,然后我升级到 Elmah MVC 并且它工作正常。

<configuration>
  <configSections>
    <sectionGroup name="elmah">
     <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
     <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
     <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
     <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>

  <appSettings>
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
    <add key="elmah.mvc.requiresAuthentication" value="false" />
    <add key="elmah.mvc.allowedRoles" value="CKAdmin" />
    <add key="elmah.mvc.route" value="elmah" />
  </appSettings>

  <system.web>
    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>
  </system.web>

  <system.webServer>
     <validation validateIntegratedModeConfiguration="false" />
       <modules runAllManagedModulesForAllRequests="true">
         <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
         <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
         <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
       </modules>
  </system.webServer>

  <elmah>
    <security allowRemoteAccess="false" />
    <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="D:\\ELMAH" />
  </elmah>
</configuration>
于 2013-05-21T23:35:52.220 回答
0

您应该进行以下更改:

<appSettings>
 ......
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="Super" />
</appSettings>
于 2015-03-11T10:44:06.873 回答