我有一个用AngularJS编写的应用程序,通过oauth 2联系Web API进行身份验证.所有内容都适用于该核心部分,但我需要传入其他参数来评估登录(clientID)并设置记住我的类型功能(记住).
从Angular方面来看,它看起来像这样:
var data = "grant_type=password&username=" + form.username + "&password=" + form.password + "&clientID=" + clientID + "&remember=" + form.remember; var deferred = $q.defer(); $http.post(serviceBase + 'token', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function (response) {
一旦我通过Startup.cs和SimpleAuthorizationServerProvider.cs处理令牌,任何想法都是捕获这些值的最佳方法吗?谢谢
使用时GrantResourceOwnerCredentials
,您可以从中检索OWIN请求OAuthGrantResourceOwnerCredentialsContext
并通过调用提取所需的自定义参数ReadFormAsync()
.
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var form = await context.Request.ReadFormAsync(); if (string.Equals(form["remember"], "true", StringComparison.OrdinalIgnoreCase)) { // Add custom logic to handle the "remember me" case. } }
也就是说,通常不鼓励添加自定义(即非标准)参数,特别是如果它们是强制性的.请注意,您不需要使用自定义clientID
参数,因为已经存在标准等效项:client_id
.