[英]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.