由于某种原因,我无法指定应允许访问错误日志的角色。无论我输入什么角色(我有管理员,超级和测试角色),我的应用程序只是重定向到登录屏幕,这是我未获得授权的预期行为。如果我选择允许所有角色使用*它可以正常工作,但是当我需要将其限制为仅限超级角色时允许所有角色。
我的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来记录错误,不确定这是否会对任何可能的答案产生影响。
答案 0 :(得分:1)
你试过这个(来自How to secure Elmah.axd?):
<configuration>
...
<location path="elmah.axd">
<system.web>
<authorization>
<allow roles="Administrators"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
答案 1 :(得分: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>
答案 2 :(得分:0)
您应该进行以下更改:
<appSettings>
......
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="Super" />
</appSettings>