1

当我们想阻止使用默认 asp.net 身份验证访问特定路径时,我们这样做:

<location path="routes.axd">
<system.web>
  <authorization>
    <allow roles="Agent"/>
    <deny users="*"/>
  </authorization>
</system.web>

我们如何使用 ServiceStack?

4

1 回答 1

1

ServiceStack 中没有保护 /paths 的配置。

使用 [Authenticate] 属性

[Authenticate]您可以通过在任一操作上添加属性来保护服务:

class MyService : Service {
    [Authenticate] 
    public object Get(Protected request) { ... }
}

请求 DTO

[Authenticate] 
class Protected { ... }

或者服务实现

[Authenticate] 
class MyService : Service {
    public object Get(Protected request) { ... }
}

或者通过从基类继承

[Authenticate] 
class MyServiceBase : Service { ... }


class MyService : MyServiceBase {
    public object Get(Protected request) { ... }
}

使用全局请求过滤器

否则,如果您想以任何其他方式限制所有请求,则可以使用全局请求过滤器,例如:

appHost.RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
    if (IsAProtectedPath(httpReq.PathInfo)) {
       new AuthenticateAttribute()
         .Execute(httpReq, httpResp, requestDto);
    }
});
于 2012-10-10T23:56:18.720 回答