Sta*_*tan 4 c# asp.net asp.net-mvc elmah asp.net-mvc-4
如何在没有默认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" />
Run Code Online (Sandbox Code Playgroud)
当我想查看错误时将它们切换true为false并查看错误,然后切换回来.但似乎当我更改这些值时,所有日志都会被删除.
我能做什么?
我认为最简单的方法是对您的自定义授权进行一些小的更改,以便ELMAH授权可以正常工作.
选项1:在登录时设置FormsAuthentication cookie.这样,在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>
Run Code Online (Sandbox Code Playgroud)
选项2:如果您正在使用将用户置于角色中,则可以覆盖默认角色提供程序以使用您为获取角色所执行的功能.这种方式稍微复杂一些,但随后可以让您在web.config中使用基于角色的身份验证,这对于保护静态文件(.pdf等)传递等内容非常有用.如果有兴趣,我可以为此添加代码.
我使用的是ASP.NET身份框架,因此这个答案与该设置有关.我还在NuGet中使用了Elmah.MVC包.我在web.config中编辑了以下行.(您需要在allowedUser设置中提供自己的用户名)
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="your_user_name" />
Run Code Online (Sandbox Code Playgroud)
似乎ELMAH确实从当前线程主体获取身份验证信息,ASP.NET身份框架将在您登录时代表您建立.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5898 次  |  
        
|   最近记录:  |