【发布时间】:2019-04-27 02:26:21
【问题描述】:
我正在尝试从我使用 .Net-Core 2.1 的 Api 中的 HttpContext 获取登录用户访问令牌:
[HttpGet]
public async Task<bool> Test()
{
var token = await HttpContext.GetTokenAsync("access_token");
return true;
}
编辑
我正在使用签名管理器来显示 Auth Providers:
SignInManager.GetExternalAuthenticationSchemesAsync()
在外部登录回调中,我将我的令牌存储在登录管理器中,如下所示:
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor: true);
if (result.Succeeded)
{
await _signInManager.UpdateExternalAuthenticationTokensAsync(info);
_logger.LogInformation("User logged in with {Name} provider.", info.LoginProvider);
return RedirectToLocal(returnUrl);
}
身份验证配置是这样设置的:
services.AddAuthentication(COOKIE_AUTH)
.AddCookie(options => options.ExpireTimeSpan = TimeSpan.FromMinutes(60))
.AddCoinbase(options => {
options.SendLimitAmount = 1;
options.SendLimitCurrency = "USD";
options.SendLimitPeriod = SendLimitPeriod.day;
options.ClientId = Configuration["Coinbase:ClientId"];
options.ClientSecret = Configuration["Coinbase:ClientSecret"];
COINBASE_SCOPES.ForEach(scope => options.Scope.Add(scope));
options.SaveTokens = true;
options.ClaimActions.MapJsonKey("urn:coinbase:avatar", "avatar_url");
});
当我尝试获取访问令牌时,我收到 null。但是我可以看到我是从 HttpContext.User 登录的。
如何从 HttpContext 获取我的访问令牌?
【问题讨论】:
-
@GabrielLuci 感谢 addcoinbase 方法继承自类似的东西,奇怪的是我让它在另一个项目中工作
标签: c# .net authentication oauth-2.0 .net-core