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);
}
}
私のプリフライト リクエストにはユーザーに関する情報が含まれていないため、これが可能かどうかはわかりません。しかし、これは一般的なシナリオのように思えますね。自分のクレームにアクセスできれば理想的ですが、この時点でユーザーについて何も知らないことは明らかです。私はこれに間違って近づいていますか?