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

本文关键字:OWIN 登录 参数传递 其他 | 更新日期: 2023-09-27 18:35:47

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

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

我该怎么做?

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

尝试:

//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

找不到任何使用常规 POST 正文参数的方法,所以我将该参数添加到标头中,该参数可通过 context.Request.Headers 集合获得。

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