我想实现的OAuth在asp.net 3.0,我的理解有一些变化关于在Microsoft.AspNetCore.Authentication的API替换更改Newtonsoft.Json类型]连结这里
它不接受用户声明的 JObject 并在您尝试将 JObject 作为参数传递给 RunClaimActions(user) 时抛出错误,并且在您运行该方法时未在方法中传递用户 JObject 参数时不会抛出错误. 结果是它不会将 User 声明返回给视图。有没有人遇到过这个问题?有没有办法将 newtonsoft JObject 转换为 JsonElement。
options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
options.ClaimActions.MapJsonKey(ClaimTypes.Name, "name");
options.ClaimActions.MapJsonKey("urn:github:login", "login");
options.ClaimActions.MapJsonKey("urn:github:url", "html_url");
options.ClaimActions.MapJsonKey("urn:github:avatar", "avatar_url");
options.Events = new OAuthEvents
{
OnCreatingTicket = async context =>
{
var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
response.EnsureSuccessStatusCode();
var user = JObject.Parse(await response.Content.ReadAsStringAsync());
context.RunClaimActions(user);
}
};
});
Run Code Online (Sandbox Code Playgroud)
Cam*_*teh 12
经过一些阅读,我通过使用 JsonDocument 解析声明并将根文档传递给 RunClaimActions 方法解决了这个问题。
options.Events = new OAuthEvents
{
OnCreatingTicket = async context =>
{
var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
response.EnsureSuccessStatusCode();
var user = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
context.RunClaimActions(user.RootElement);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
668 次 |
最近记录: |