如何使用ServiceStack身份验证阻止访问特定路径?

时间:2012-10-10 23:09:57

标签: servicestack

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

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

我们如何处理ServiceStack?

1 个答案:

答案 0 :(得分:1)

ServiceStack中没有保护/路径的配置。

使用[Authenticate]属性

您可以通过在Action:

上添加[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) { ... }
}

使用全局请求过滤器

否则,如果您想以任何其他方式限制所有请求,则可以使用global Request Filter,例如:

appHost.RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
    if (IsAProtectedPath(httpReq.PathInfo)) {
       new AuthenticateAttribute()
         .Execute(httpReq, httpResp, requestDto);
    }
});