gpt4 book ai didi

c# - 在 ASP.Net Core MVC 中读取 JSON post 数据

转载 作者:可可西里 更新时间:2023-11-01 08:44:50 26 4
gpt4 key购买 nike

我试图为此找到一个解决方案,但所有出现的都是针对以前版本的 ASP.Net。

我正在使用 JWT 身份验证中间件并使用以下方法:

private async Task GenerateToken(HttpContext context)
{
var username = context.Request.Form["username"];
var password = context.Request.Form["password"];
//Remainder of login code
}

这会像表单数据一样获取发送的数据,但我的 Angular 2 前端将数据作为 JSON 发送。

login(username: string, password: string): Observable<boolean> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify({ username: username, password: password });
        return this.http.post(this._api.apiUrl + 'token', body, options)
            .map((response: Response) => {
                
            });
    }

我的首选解决方案是将其作为 JSON 发送,但我未能成功检索数据。我知道它正在发送,因为我可以在 fiddler 中看到它,如果我使用 Postman 并只发送表单数据,它就可以正常工作。

基本上我只需要弄清楚如何更改这一行以读取 json 数据

var username = context.Request.Form["username"];

最佳答案

当它到达你的中间件时,请求流已经被读取,所以你可以在这里做的是 Microsoft.AspNetCore.Http.Internal.EnableRewindRequest 并自己阅读

站点范围:

Startup.cs
using Microsoft.AspNetCore.Http.Internal;

Startup.Configure(...){
...
//Its important the rewind us added before UseMvc
app.Use(next => context => { context.Request.EnableRewind(); return next(context); });
app.UseMvc()
...
}

或选择性的:

private async Task GenerateToken(HttpContext context)
{
context.Request.EnableRewind();
string jsonData = new StreamReader(context.Request.Body).ReadToEnd();
...
}

关于c# - 在 ASP.Net Core MVC 中读取 JSON post 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42561350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com