簡體   English   中英

在ASP.Net Core MVC中讀取JSON post數據

[英]Read JSON post data in ASP.Net Core MVC

我試圖找到一個解決方案,但所有出現的都是以前版本的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發送,但我在檢索數據時失敗了。 我知道它正在發送,因為我可以在小提琴手中看到它,如果我使用Postman並且只是發送表單數據就可以了。

基本上我只需要弄清楚如何更改此行以讀取json數據

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

當它到達你的中間件時,請求流已經被讀取了,所以你可以在這里做的是請求上的Microsoft.AspNetCore.Http.Internal.EnableRewind並自己讀取它

網站范圍:

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();
    ...
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM