Angularjs身份验证问题

时间:2016-11-01 01:35:10

标签: javascript java angularjs spring

我正在尝试在我的angularjs应用程序中实现基于JWT的身份验证。但我正在努力解决请求标头问题。问题是我有一个调用服务的Controller,这个会返回一个令牌。这一步很好。

Producer:       GPL Ghostscript 9.18
CreationDate:   10/31/16 21:29:18
ModDate:        10/31/16 21:29:18
Tagged:         no
Form:           none
Pages:          1
Encrypted:      no
Page size:      612 x 555 pts (rotated 0 degrees)
File size:      2373 bytes
Optimized:      no
PDF version:    1.4.

但问题是我想在登录后将用户重定向到“secure / index”并在请求中使用“Authentication”标头,因为我有一个Spring过滤器检查所有“* / secure”路径是否有该标头

主app.js是以下

'use strict';

angular.module("home.controllers", ['home.services', 'ngStorage'])

.controller('HomeController', ['$scope', '$location', '$http', '$localStorage', 'HomeService',
function($scope, $location, $http, $localStorage, HomeService) {


    function login(user, password) {

        HomeService.login(user, password).then(

            function(loginResult) {
                var token = loginResult.token;

                if (loged()) {
                    $localStorage.token = token;
                    $http.defaults.headers.common.Authorization = 'Bearer ' + token;
                    console.log($location.path('secure/index'));
                    $location.path('secure/index');
                }
            },

            function(err) {
                console.error(err);
            }
        );
    }

    function loged() {
        return $scope.token !== null;
    }

    return {

        loged: function() {
            return loged();
        },

        login: function(user, password)) {
        return login(user, password)
    }
};

}]);

问题是它没有重定向页面。而不是$ location我尝试使用$ window.href并且它成功地重定向页面但在请求中没有auth头。

有任何想法/建议吗?请注意,我是Angularjs中的一名先生,所以可能有更多错误。

提前致谢

1 个答案:

答案 0 :(得分:1)

看起来,一旦您拥有了令牌,就会使用secure/index重定向到$location.path('secure/index');。但是,您拥有的示例代码未显示映射到secure/index的状态。