如何在不使用角色的情况下使用ServiceStack的Request Logger?

时间:2014-08-10 19:32:00

标签: servicestack

在我的应用程序中,我使用自定义请求筛选器以使用基本身份验证对用户进行身份验证。我想使用我已注册的请求记录器,如下所示:

Plugins.Add(new RequestLogsFeature { EnableSessionTracking = false });

当我在/ requestlogs上执行请求时,我收到以下错误:

{
  "Results": [],
  "ResponseStatus": {
    "ErrorCode": "Invalid Role",
    "Message": "Invalid Role",
    "StackTrace": "[RequestLogs: 10.08.2014 19:29:03]:\n[REQUEST: {Skip:0}]\nServiceStack.Common.Web.HttpError: Invalid Role\r\n   at ServiceStack.ServiceInterface.RequiredRoleAttribute.AssertRequiredRoles(IRequestContext requestContext, String[] requiredRoles)\r\n   at ServiceStack.ServiceInterface.Admin.RequestLogsService.Any(RequestLogs request)\r\n   at ServiceStack.ServiceHost.ServiceRunner`1.Execute(IRequestContext requestContext, Object instance, TRequest request)",
    "Errors": []
  }
}

如何强制请求记录器使用我的基本身份验证请求筛选器并忽略我不使用的角色?

1 个答案:

答案 0 :(得分:5)

您可以删除角色的要求:

Plugins.Add(new RequestLogsFeature { 
    EnableSessionTracking = false,
    RequiredRoles = null
});

您可以找到RequestLogFeature here

的各种设置

要在不使用身份验证的情况下阻止访问请求日志,您可以使用以下方法将基本身份验证过滤器属性应用于此:

typeof(RequestLogsService).AddAttributes(MyAuthenticateAttribute);

其中MyAuthenticateAttribute是您的基本身份验证过滤器属性的名称。