如何将其他参数传递给 OWIN 登录
本文关键字:OWIN 登录 参数传递 其他 | 更新日期: 2023-09-27 18:35:47
我有一个 ASP.NET 的Web API站点,它正在执行OWIN身份验证,传递用户名和密码,这些用户名和密码神奇地出现在我的GrantResourceOwnerCredentials
方法中,位于OAuthGrantResourceOwnerCredentialsContext
参数的UserName
和Password
属性中。 不知道这是如何工作的,但它确实如此。
无论如何,现在我想将另一个参数传递给登录方法,我想以相同的GrantResourceOwnerCredentials
方法访问该方法。 但是由于我不知道这个魔术是如何工作的,它从登录请求中获取UserName
和Password
参数并将它们复制到OAuthGrantResourceOwnerCredentialsContext
参数中,我现在不知道如何访问我的新参数。
我该怎么做?
尝试:
//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正文以正常方式做到这一点,我很想听听。