Использование Angular для аутентификации пользователей API

Я создаю веб-приложение в Angular (я новичок в Angular).

Я создаю форму для передачи новой информации о пользователе стороннему программному обеспечению через конечную точку API.

для публикации данных мне нужно передать name(new user) email(new user) user_key(mine) и api_key (changes evry hour)

Чтобы получить новый api_key, мне нужно опубликовать

POST: https://pi.pardot.com/api/login/version/3
message body: email=<email>&password=<password>&user_key=<user_key>

и это возвращает

<rsp stat="ok" version="1.0">
    <api_key><api_key here></api_key>
</rsp>

Как только у меня будет новый ключ, я могу передать его с помощью сообщения формы для публикации данных.

Вопрос

Я думаю, мне нужна функция, которая запускается перед публикацией данных, которые дозируют публикацию, чтобы получить новую api_keyи изменяют переменную api_key в моей новой пользовательской публикации.

поэтому главный вопрос заключается в том, как мне это сделать с помощью angular, я добавил свой текущий пост-контроллер ниже, который публикует новые пользовательские данные.

Мой контроллер

// submit button controller POST
// =============================================================================
FirstModule.controller('formController', function ($scope, $http) {
    $scope.formData = {};

    $scope.processForm = function (Fname, Lname, email) {
        var data = {
            Fname: $scope.formData.Fname,
            Lname: $scope.formData.Lname,
            email: $scope.formData.email,
            api_key: 'changes every hr', //needs to be dynamic
            user_key: 'my key'
        };

//Call the services
        $http.post('https://some api.com/api/prospect/version/4/do/create', JSON.stringify(data)).then(function (response) {
            if (response.data)
                $scope.formData = "Post Data Submitted Successfully!";

        }, function (response) {
            $scope.formData = "Post Data Submitted Failed";
            $scope.statusval = response.status;
            $scope.statustext = response.statusText;
            $scope.headers = response.headers();
        });
    };
});

Моя форма

<form name="myForm" id="signup-form" class="col-sm-8 col-sm-offset-2"
                  ng-submit="processForm()"
                  ng-click="postdata(formData)">

                <!-- our nested state views will be injected here -->
                <div id="form-views" ui-view></div>
            </form>

Итак, эта часть в порядке, но как мне запустить функцию до того, как она запустится, чтобы я получил последнюю версию api_key? и что еще более важно, как я могу сделать это безопасно?

Это API Pardot.

Для безопасности я должен поставить все; Запрос API на поддерживаемом скрипте, возможно, на узле?


person Beep    schedule 07.06.2017    source источник


Ответы (1)


вы можете попробовать использовать app.run() и написать в нем функцию. app.run() всегда будет запускаться перед вашим контроллером. Вот одна ссылка, по которой вы можете проверить документацию AngularJS app.run()?

person Nitin Saini    schedule 07.06.2017
comment
Спасибо, я посмотрю на это, поэтому я создаю функцию для сохранения api_key, а затем вставляю этот api_key в свой почтовый контроллер? - person Beep; 07.06.2017
comment
Да, еще одна важная вещь, на которую следует обратить внимание: если вы поддерживаете пользовательский сеанс в своем приложении, вы можете сохранить его в сеансе и написать метод в своем app.run(), например $scope.sessionDetails(); - person Nitin Saini; 08.06.2017