使用Angular对用户API进行身份验证

时间:2017-06-07 10:08:03

标签: javascript angularjs api restful-authentication pardot

我正在Angular中构建一个Web应用程序(我是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进行此操作,我已经添加了发布新用户数据的当前post控制器。

我的控制器

// 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请求可能是节点吗?

1 个答案:

答案 0 :(得分:0)

你可以尝试使用app.run()并在其中编写函数。 app.run()将始终在您的控制器之前运行。您可以通过以下链接查看AngularJS app.run() documentation?