1

我声明我使用 ServiceStack 来验证我的服务。我的问题是以下我正在通过凭据和 API 密钥开发两种身份验证方法。实现是正确的,但我希望通过凭据对某些服务进行身份验证,而通过 API 密钥对其他服务进行身份验证。从文档中阅读,在我看来,我理解在 [Authenticate] 属性中插入与引用 Auth 类(凭据或 API)的属性名称相等的提供程序参数就足够了,得到 [Authenticated ("apikey")]例如。不幸的是,在实现上面的示例时,如果我使用凭据进行身份验证,我可以调用该服务,而我只希望通过 API 密钥调用该服务。你有什么解决办法?多谢

4

1 回答 1

1

[Authenticate(provider)]根据调用 AuthProvidersIsAuthorized()以验证会话是否经过身份验证的 Auth Provider 来检查用户是否被认为是经过身份验证的。

如果您想强制使用 API 密钥对请求进行身份验证,您可以在您的服务实现中检查它,例如:

if (Request.GetSession().AuthProvider != ApiKeyAuthProvider.Name)
    throw HttpError.Forbidden("Must authenticate with API Key");
于 2020-04-07T11:02:14.437 回答