簡體   English   中英

laravel Passport:為什么相同的代碼可用於Http Get請求,但不適用於POST?

[英]laravel passport: why the same code works with Http Get request but doesn't work with POST?

我有一個Laravel應用程序和一個通過Passport連接到它的C#應用​​程序。

我做了一些簡單的功能來使用戶更新密碼,如下所示:

Laravel路線

Route::post('user/updatepassword','UserController@changepassword')->middleware('auth:api');

Laravel控制器

public function changepassword(Request $request)
{
    $this->validate($request, [ 'password' => 'required|string|max:255' ]);

    $newuser = User::find(Auth::user()->id);
    $newuser->password = bcrypt($request->password);
    $newuser->save();
}

C#功能

public string UpdatePassword(string password)
{
    var client = new RestClient(APPConnection.ApiRoot + "user/updatepassword");
    //// client.Authenticator = new HttpBasicAuthenticator(username, password);

    var request = new RestRequest("", Method.POST);
    request.AddParameter("password", password); // adds to POST or URL querystring based on Method
    request.AddHeader("Authorization", "Bearer " + Current_User.access_token);

    // execute the request
    IRestResponse response = client.Execute(request);
    var content = response.Content; // raw content as string

    return content;
}

這段代碼行不通,並且拋出了很多毫無意義的異常,或者至少我無法弄清楚。 但是,當我更改所有內容以在C#代碼和Laravel端都使用HTTP GET請求時,它可以正常工作。

我不知道怎么了。 可能我傳遞令牌的方式對於GET和POST請求應該有所不同。

這是我得到的回復的副本:

 { "message": "", "exception": "Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\HttpException", "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Exceptions\\\\Handler.php", "line": 203, "trace": [ { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Exceptions\\\\Handler.php", "line": 175, "function": "prepareException", "class": "Illuminate\\\\Foundation\\\\Exceptions\\\\Handler", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplication\\\\app\\\\Exceptions\\\\Handler.php", "line": 51, "function": "render", "class": "Illuminate\\\\Foundation\\\\Exceptions\\\\Handler", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 83, "function": "render", "class": "App\\\\Exceptions\\\\Handler", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 55, "function": "handleException", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\View\\\\Middleware\\\\ShareErrorsFromSession.php", "line": 49, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\View\\\\Middleware\\\\ShareErrorsFromSession", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Session\\\\Middleware\\\\StartSession.php", "line": 63, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Session\\\\Middleware\\\\StartSession", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Cookie\\\\Middleware\\\\AddQueuedCookiesToResponse.php", "line": 37, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Cookie\\\\Middleware\\\\AddQueuedCookiesToResponse", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Cookie\\\\Middleware\\\\EncryptCookies.php", "line": 59, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Cookie\\\\Middleware\\\\EncryptCookies", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 102, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Router.php", "line": 647, "function": "then", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Router.php", "line": 622, "function": "runRouteWithinStack", "class": "Illuminate\\\\Routing\\\\Router", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Router.php", "line": 588, "function": "runRoute", "class": "Illuminate\\\\Routing\\\\Router", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Router.php", "line": 577, "function": "dispatchToRoute", "class": "Illuminate\\\\Routing\\\\Router", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Kernel.php", "line": 176, "function": "dispatch", "class": "Illuminate\\\\Routing\\\\Router", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 30, "function": "Illuminate\\\\Foundation\\\\Http\\\\{closure}", "class": "Illuminate\\\\Foundation\\\\Http\\\\Kernel", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\fideloper\\\\proxy\\\\src\\\\TrustProxies.php", "line": 56, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Fideloper\\\\Proxy\\\\TrustProxies", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\TransformsRequest.php", "line": 30, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\TransformsRequest", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\TransformsRequest.php", "line": 30, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\TransformsRequest", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\ValidatePostSize.php", "line": 27, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\ValidatePostSize", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\CheckForMaintenanceMode.php", "line": 46, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 149, "function": "handle", "class": "Illuminate\\\\Foundation\\\\Http\\\\Middleware\\\\CheckForMaintenanceMode", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Routing\\\\Pipeline.php", "line": 53, "function": "Illuminate\\\\Pipeline\\\\{closure}", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Pipeline\\\\Pipeline.php", "line": 102, "function": "Illuminate\\\\Routing\\\\{closure}", "class": "Illuminate\\\\Routing\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Kernel.php", "line": 151, "function": "then", "class": "Illuminate\\\\Pipeline\\\\Pipeline", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplicationendor\\\\laravel\\framework\\\\src\\\\Illuminate\\\\Foundation\\\\Http\\\\Kernel.php", "line": 116, "function": "sendRequestThroughRouter", "class": "Illuminate\\\\Foundation\\\\Http\\\\Kernel", "type": "->" }, { "file": "C:\\\\xampp\\\\htdocs\\\\myefapplication\\\\public\\\\index.php", "line": 55, "function": "handle", "class": "Illuminate\\\\Foundation\\\\Http\\\\Kernel", "type": "->" } ] } 

我不知道為什么異常輸出如此恐怖,但是您遇到了CSRF令牌不匹配異常。

Laravel期望在web中間件中的所有POST路由上默認使用CSRF令牌。 routes/web.php文件中定義的所有路由都放在web中間件組中。

如果這是一個API端點(假設您使用的是護照,我認為是的),則應在routes/api.php文件中定義您的路由。 這樣,它被放置在api中間件組而不是web中間件組中。 除其他外,這將消除CSRF令牌限制。

暫無
暫無

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

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