这是一个 .NET Core/5 解决方案,无需使用 Identity Server 包即可为我工作。
基本上,您从现有的表单集合中构建一个<string, StringValues> 类型的新字典,根据需要修改字典中的值,然后从该字典创建一个新的FormCollection 并将其设置为context.Request.Form。要记住的重要一点是,StringValues 类型的值只是一个字符串数组!
此示例演示了我从请求表单中删除“client_id”字段。
var formDictionary = new Dictionary<string, StringValues>();
var form = context.Request.Form;
foreach (var key in form.Keys)
{
// Only add if key is NOT client_id
if (key != "client_id")
{
form.TryGetValue(key, out StringValues formValues);
formDictionary.Add(key, formValues);
}
}
FormCollection formCollection = new FormCollection(formDictionary);
context.Request.Form = formCollection;
这是我将“client_id”字段更改为“NewValue”的另一个示例
var formDictionary = new Dictionary<string, StringValues>();
var form = context.Request.Form;
foreach (var key in form.Keys)
{
form.TryGetValue(key, out StringValues formValues);
// Change client_id value to "NewValue"
if (key == "client_id")
{
formValues = new string[] { "NewValue" };
}
formDictionary.Add(key, formValues);
}
FormCollection formCollection = new FormCollection(formDictionary);
context.Request.Form = formCollection;