使用ServiceStack和更多提供程序进行身份验证



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

[Authenticate(provider)]将检查用户是否被视为根据该Auth Provider进行了身份验证,并调用AuthProvidersIsAuthorized()来验证会话是否已通过身份验证。

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

if (Request.GetSession().AuthProvider != ApiKeyAuthProvider.Name)
throw HttpError.Forbidden("Must authenticate with API Key");

最新更新