我已經設置了一個使用Laravel 5.1作爲API的Ionic應用程序。當我嘗試使用Laravel的樣板AuthController嘗試登錄,註冊或通過電子郵件發送重置密碼鏈接時,會收到通過AngularJS ngResource發送到相關RESTful端點的請求,但它始終會執行302 URL重定向以在返回200之前加載視圖來自不同發起人的響應,其中有一個與未找到視圖相關的錯誤,我可以在Chrome的網絡標籤中看到這一點(請參閱下面的輸出)。我期望該視圖不會被找到,因爲我使用Laravel作爲API,除了電子郵件模板外,沒有任何視圖。我想要做的是刪除重定向。Laravel 5.1 - 嘗試使用Auth Boilerplate作爲API來阻止302 URL重定向
例如,一個被遺忘的密碼電子郵件請求會消失(並且電子郵件會通過使用電子郵件模板的重置鏈接接收),而不是針對該請求的JSON響應,會發生URL重定向(代碼302),然後是響應200有錯誤,該視圖未找到:
**錯誤響應**
Sorry, the page you are looking for could not be found.
NotFoundHttpException in RouteCollection.php).
鉻控制檯 - 網絡選項卡
Name Status Type Initiator Size Time
forgot 302 text/html ionic.bundle.js:18526 614 B 2.38 s
localhost 200 xhr http://project.dev/api/password/forgot 2.3 KB 2.00 ms
我會想到的是:
Name Status Type Initiator Size Time
forgot 200 text/html ionic.bundle.js:18526 614 B 2.38 s
如果我使用不使用的AuthController行動路線發生,而是直接返回這樣的JSON響應:
Route::post('email', function() {
return response()->json([ 'message' => 'Send an email!' ], 200);
});
Laravel路由
+--------+----------+------------------------------+----------------------+-------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------------+----------------------+-------------------------------------------------------------+------------+
| | GET|HEAD | test | | Closure | |
| | POST | api/auth/login | | Project\Http\Controllers\Auth\[email protected] | guest |
| | GET|HEAD | api/auth/logout | | Project\Http\Controllers\Auth\[email protected] | |
| | POST | api/auth/register | | Project\Http\Controllers\Auth\[email protected] | guest |
| | POST | api/password/forgot | | Project\Http\Controllers\Auth\[email protected] | guest |
| | POST | api/password/reset | | Project\Http\Controllers\Auth\[email protected] | guest |
+--------+----------+------------------------------+----------------------+-------------------------------------------------------------+------------+
所以我通過不同的身份驗證相關CLASSE看着s和traits,並有一些幫助發現,我可以通過將它們添加到AuthController來覆蓋postLogin,postRegister,postEmail,postReset和getLogout路由。因此,例如postEmail現在返回一個響應,並位於AuthController中:
** postEmail覆蓋AuthController ** 這是原始postEmail方法的副本,返回語句發生更改。
public function postEmail(Request $request)
{
$this->validate($request, [ 'email' => 'required|email' ]);
$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
switch ($response) {
case Password::RESET_LINK_SENT:
return response()->json([ 'message' => trans($response) ], 200);
case Password::INVALID_USER:
return response()->json([ 'message' => trans($response) ], 400);
}
}
但是,與這和其他人(postLogin,的postRegister,postReset和getLogout)在AuthController覆蓋,並用JSON響應覆蓋重定向,出於某種原因,302 URL重定向仍然存在,就好像改變我對AuthController所做的更改不會被應用。爲什麼不能繼續工作?
請顯示您的routes.php文件,並且可能需要使用JSON響應而不是重定向的控制器。 –