404 не найдена ошибка при маршрутизации с Laravel

Я пытаюсь следовать учебному пособию Дэвида Мошера о сквозном использовании углового JS на YouTube: http://www.youtube.com/watch?v=hqAyiqUs93c.

Все шло нормально, пока я не попытался перенаправить URL-адреса / auth / login и auth / logout в службу аутентификации, как показано на видео около 14:30. Когда я пытаюсь войти в систему, я получаю сообщение об ошибке 404 Not Found. Я попытался возиться с URL-адресом маршрута, но безрезультатно. Я работаю локально на MAMP с MySQL и Laravel.

Вот мой код для router.php

Route::get('/', function(){
    return View::make('index');
});

Route::post('/auth/login/', 'AuthController@login');
Route::get('/auth/logout/', 'AuthController@logout');

и мой код для AuthController

<?php

class AuthController extends BaseController {
  public function login()
  {
    if(Auth::attempt(array('email' => Input::json('email'), 'password' => Input::json('password'))))
    {
      return Response::json(Auth::user());
    } else {
      return Response::json(array('flash' => 'Invalid username or password'), 500);
    }
  }

  public function logout()
  {
    Auth::logout();
    return Response::json(array('flash' => 'Logged Out!'));
  }

}

наконец, код для службы аутентификации

angular.module("epicApp")
    .factory('AuthenticationService', function($http, $location){
        return{
            login: function(credentials){
                return $http.post("/auth/login/", credentials);
            },
            logout: function(){
                return $http.get("/auth/logout/");
            }
        }
    })

2 ответа

Решение

Единственная проблема - вы должны заменить все /auth/login/ в auth/login а также /auth/logout/ в auth/logout в вашем маршруте и угловой сценарий.

Таким образом, ваш маршрут должен быть,

Route::get('/', function(){
    return View::make('index');
});

Route::post('auth/login', 'AuthController@login');
Route::get('auth/logout', 'AuthController@logout');

И JS,

angular.module("epicApp")
    .factory('AuthenticationService', function($http, $location){
        return{
            login: function(credentials){
                return $http.post("auth/login", credentials);
            },
            logout: function(){
                return $http.get("auth/logout");
            }
        }
    })

Я не знаю, актуален ли этот вопрос, но вы получите 404 с любым HTTP-URL, если внутри публичной папки индексный файл не является.php. Вы можете просто переименовать index.html вашего углового приложения.

Другие вопросы по тегам