如何在OAuthAuthorizationServerProvider的GrantResourceOwnerCredentials方法中手动设置当前用户?

时间:2014-11-11 14:13:30

标签: asp.net-mvc asp.net-web-api asp.net-identity asp.net-web-api2 claims-based-identity

我有一个asp.net mvc webapi 2项目,我正在使用新的asp.net身份基础设施,包括owin和oauth及其所有强大功能......

我正在使用基于令牌的系统进行授权:app.UseOAuthBearerTokens(OAuthOptions);

一切都很有效,我唯一的问题是以下内容 - 在我自己的OAuthAuthorizationServerProvider实现中,在方法GrantResourceOwnerCredentials中(一旦用户想要通过访问/ token url),在检查用户有效性和其他事情之后,我需要调用其他方法(重新计算购物车等)但这些方法(不要问为什么)查看当前上下文User以获取用户的用户名和角色,但在运行GrantResourceOwnerCredentials方法期间,当前上下文User为空(在某种程度上是正常的 - 我不是在问为什么)。

我的问题是:为了不破坏使用oAuth承载令牌授权的任何指导,可以像这样手动设置此方法中的用户吗?

context.Request.User = new ClaimsPrincipal(oAuthIdentity);

感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

在承诺和授权的owin启动命令中

必须是这样的

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions());

查看此answer