如何确保所有调用asp web api是授权的
本文关键字:web asp api 授权 调用 何确保 确保 | 更新日期: 2023-09-27 18:12:43
我正在使用asp web api 2和asp身份构建一个saas应用程序。该api将被web、移动和桌面应用程序使用。我如何确保所有调用我的web api方法是授权的?在网页上,我们可以要求用户在进入某个页面之前登录,但是移动/桌面呢?用户是否需要在每次通话时提供登录名和密码?有更好的解决方案吗?我一直在搜索,没有找到任何关于这个的文章。如能寄来样品或实物,将不胜感激。
通常当使用api作为后端时,您必须对每个请求进行用户身份验证。
(它实际上也发生在其他框架中,如mvc.net,但他们使用cookie来跟踪用户,这些cookie会随着每个请求来回发送)
如果你需要更多的信息,我可以多解释一点。
==编辑:添加代码示例==
您可以使用请求处理程序来验证请求头是否包含有效令牌:
public class AuthorizationHeaderHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage pRequest, CancellationToken pCancellationToken)
{
IEnumerable<string> apiKeyHeaderValues = null;
if (!pRequest.Headers.TryGetValues("Authorization", out apiKeyHeaderValues)
|| !TokenRepo.IsVallidToken(apiKeyHeaderValues))
{
var response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{
Content = new StringContent("{'"error'": '"invalid_token'"}")
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return Task.Factory.StartNew(() => response);
}
return base.SendAsync(pRequest, pCancellationToken);
}
}
您所要做的就是保持令牌与哪个用户相关联,并确保令牌有有效期。一旦通过,它也不再有效。
我希望这能澄清一点。同样,如果你有更多的问题,不要犹豫,尽管问。