我有一个ASP.NET Web API站点,它正在进行OWIN身份验证,传递用户名和密码,这些神奇地出现在我的GrantResourceOwnerCredentials
方法中UserName
和{{1} } Password
参数的属性。不知道这是如何工作的,但确实如此。
无论如何,现在我想将另一个参数传递给login方法,我想在同一个OAuthGrantResourceOwnerCredentialsContext
方法中访问该方法。但由于我不知道这个魔法是如何工作的,它会从登录请求中获取GrantResourceOwnerCredentials
和UserName
参数并将它们复制到Password
参数,我现在不知道我是怎么做的可以访问我的新参数。
我该怎么做?
答案 0 :(得分:4)
尝试:
//read all parameters
IFormCollection parameters = await context.Request.ReadFormAsync();
if (parameters == null)
{
context.SetError("invalid_grant", "Invalid request");
return;
}
//get desired parameter
var deviceId = parameters.Get("device_id");
//check if it was send
if (deviceId == null)
{
context.SetError("invalid_grant", "parameter 'device_id' is required");
return;
}
答案 1 :(得分:2)
无法使用常规POST正文参数找到任何方法,因此我将参数添加到标题中,通过context.Request.Headers
集合可以使用该参数。
这是我现在的答案;如果有人有办法以正常的方式做到这一点,通过POST机构,我很乐意听到它。