2014-01-27 44 views
3

因为ELMAH依赖于ASP.NET安全以下web.config部分,不与ServiceStack授权工作:如何使用ServiceStack安全ELMAH

<location path="admin"> 
<system.web> 
    <httpHandlers> 
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
    </httpHandlers> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 

那么,什么是锁定的最佳实践elmah.axd给管理员用户以外的所有人?

+0

最后我最终做了我自己的log.axd实现并停用它。因此,我现在有一个包含请求ErrorLog.GetDefault(request.HttpContext.ApplicationInstance.Context).GetErrors(pageIndex,request.Rows,errors)的ElmahService(ServiceStack服务),并返回一个在剃刀上格式化的List 实例视图。这样,我可以更好地控制安全。 – labilbe

回答

3

当您使用MVC运行ServiceStack时,通常应该定义ServiceStack以使用<location path="api">来获取对自定义位置的请求,例如api

看到这里的设置说明:

因此ServiceStack不会处理请求到其他位置,因此位置路径<location path="admin">将被处理的路径之外通过ServiceStack,所以您的elmah.axd的身份验证将由IIS处理。所以IIS将按照惯例进行身份验证。