@krekerov
Fullstack ninja

Как отправлять данные авторизации Angular?

Привет.
Как сделать отправку данных авторизации?
Бекенд Slim framework:
$app->get('/goods',authorize('user'), 'getGoods');
function login() {

    if(!empty($_POST['email']) && !empty($_POST['password'])) {
        if($_POST['email'] == 'admin' && $_POST['password'] == 'admin') {
            $user = array("email"=>"admin", "firstName"=>"admin", "lastName"=>"admin", "role"=>"user");
            $_SESSION['user'] = $user;
            echo fix_json(json_encode($user));
        }
        else {
            echo '{"error":{"text":"Неверный логин-пароль"}}';
        }
    }
    else {
        echo '{"error":{"text":"Необходимо авторизоваться. need login()"}}';
    }
}


services.js
appServices.factory('Login', ['$resource',
  function($resource){
    return $resource('api/login', {}, {
      post: {method:'POST',params:{email:'admin',password:'admin'}}
    });
  }]);

controllers.js
function LoginCtrl(Login, $location, $scope, $http) {
    Login.post();

}
LoginCtrl.$inject = ['Login', '$location', '$scope', '$http'];


После отправки ангулар получает какую-то куку, непонятно откуда, хотя по логике slim она не дается, пока не введем правильно логин, пароль.
Как отправлять данные авторизации Angular?

На jquery все работает.
  • Вопрос задан
  • 3225 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
Вероятно, дело в том, что ангуляр посылает запрос в виде application/json, а не www-form-urlencoded.

Попробуйте в начале PHP скрипта написать что-то вроде:

if (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') === 0) {
    $_POST = @json_decode(file_get_contents('php://input'), true);
    if (!is_array($_POST)) $_POST = [];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы