c# - 从 C# 中的 OAuthAuthorizationServer 注册后生成访问令牌
问题描述
我正在使用 owin oAuth 为 Web api 访问生成用户令牌,例如
public void Configuration(IAppBuilder app)
{
OAuthOptions = new OAuthAuthorizationServerOptions()
{
TokenEndpointPath = new PathString("/auth/token"),
Provider = new ApplicationAuthProvider(),
AllowInsecureHttp = true,
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1)
};
app.UseOAuthBearerTokens(OAuthOptions);
}
和
public class ApplicationAuthProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
DL_User dlUser = new DL_User();
bool Valid = dlUser.ValidateUser(context.UserName,context.Password);
if (Valid)
{
var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("Username", context.UserName));
identity.AddClaim(new Claim("Password", context.Password)); context.Validated(identity);
}
else
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
}
}
我有一个控制器方法供用户注册
[ResponseType(typeof(User))]
[Route("Register")]
public IHttpActionResult Register(User user)
{
userRepository.CreateUser(user);
//Need to get user's access token here
return Ok(user);
}
当我使用用户名和密码调用“/auth/token”端点时,这工作正常,它返回访问令牌。
但是我怎样才能给用户访问令牌作为注册 API 调用的响应呢?
在这里,我需要获取用户的访问令牌,并在 Controller 的 Register 方法中将其作为响应。我怎样才能做到这一点?
解决方案
推荐阅读
- php - 未捕获的错误:调用成员函数查询
- dataframe - PySpark数据框写入orc不允许带有连字符的列名
- python - pd.categorical 没有按情节中的指定顺序对条形图进行排序
- python - 从 http 请求响应中提取 JSON - Scrapy
- flutter - 无法从 Flutter HTTP 请求中获取用户 ID
- oracle - 将行变成列,然后左连接到另一个查询
- sql-server - 如何将 Windows Server 上的 SQL Server 链接到 Window 10 上的 SQL Server?
- javascript - jquery url没有替换
- javascript - 使用组件来简化长 HTML,即使组件不重复并且没有道具(Vue 或任何其他 js 库)。是还是不是?
- html - 移动图片有一些问题