如何在没有默认ASP.NET授权角色管理器的情况下将ELMAH配置为仅对某些人显示?
我(以及其他许多人,我认为)使用自己的授权逻辑,从零开始构建我的项目,而不使用提供的模板。我想要记录错误,但似乎不可能配置ELMAH (以某种方式覆盖功能)来使其与其他授权一起工作,甚至使其仅对特定的IP地址工作。
由于我将可以访问web.config,因此我尝试更改这些值,以便在缺省情况下不显示elmah。
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="false" />当我想查看错误时,将它们从true切换到false并查看错误,然后再切换回来。但似乎当我更改这些值时,所有日志都会被擦除。
我能做什么?
发布于 2013-01-23 22:18:29
我认为最简单的方法是对您的自定义授权进行一些小的修改,这样ELMAH授权就可以工作了。
cookie选项1:在登录时设置FormsAuthentication 。这样,在web.config中,allow users="username"应该可以工作。成功登录后,您可以使用FormsAuthentication.SetAuthCookie(theUsername, true)设置cookie。
ELMAH授权如下所示:
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<authorization>
<allow users="theUserName" />
<deny users="*" />
</authorization>
</system.web>
...other config settings
</location>选项2:如果您使用的是将用户放入角色,则可以覆盖默认的角色提供程序,以使用您创建的函数来获取角色。这种方式稍微复杂一些,但是可以让您在web.config中利用基于角色的身份验证,这对于保护静态文件(.pdf等)传递非常有用。如果感兴趣,我可以为此添加代码。
https://stackoverflow.com/questions/14481506
复制相似问题