ASP.NET Web API:在预检请求中获取客户端ID

时间:2015-01-07 21:06:23

标签: cors asp.net-web-api2 preflight

我在ASP.NET Web API项目中启用了CORS,我需要一种方法来识别发出预检请求的用户。这是因为每个客户都有自己的允许来源。

这是CorsPolicyProvider的样子:

public class MyCorsPolicyProvider : ICorsPolicyProvider {

    private CorsPolicy _policy;

    public MyCorsPolicyProvider() {
        _policy = new CorsPolicy {
            AllowAnyMethod= true,
            AllowAnyHeader = true
        };
    }

    public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
        var clientId = ""; // How do I get this? Getting the user name or any way to uniquely identify the user is fine.
        Client client = ClientManager.FindClient(clientId);

        if (client != null && !string.IsNullOrEmpty(client.AllowedOrigin)) {
            _policy.Origins.Add(client.AllowedOrigin);
        }

        return Task.FromResult(_policy);
    }
}

我的预检请求并不包含有关用户的任何信息,因此我不确定这是否可行。但在我看来,这是一种常见的情况,不是吗?如果我可以访问我的声明,那将是理想的,但显然我们现在对这个用户一无所知。我接近这个错误吗?

0 个答案:

没有答案