如何将其他参数传递给OWIN登录?

时间:2016-02-23 14:35:38

标签: c# asp.net-web-api owin

我有一个ASP.NET Web API站点,它正在进行OWIN身份验证,传递用户名和密码,这些神奇地出现在我的GrantResourceOwnerCredentials方法中UserName和{{1} } Password参数的属性。不知道这是如何工作的,但确实如此。

无论如何,现在我想将另一个参数传递给login方法,我想在同一个OAuthGrantResourceOwnerCredentialsContext方法中访问该方法。但由于我不知道这个魔法是如何工作的,它会从登录请求中获取GrantResourceOwnerCredentialsUserName参数并将它们复制到Password参数,我现在不知道我是怎么做的可以访问我的新参数。

我该怎么做?

2 个答案:

答案 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;
}

基于:https://stackoverflow.com/a/21244952/965722

答案 1 :(得分:2)

无法使用常规POST正文参数找到任何方法,因此我将参数添加到标题中,通过context.Request.Headers集合可以使用该参数。

这是我现在的答案;如果有人有办法以正常的方式做到这一点,通过POST机构,我很乐意听到它。