【发布时间】:2016-11-01 01:35:09
【问题描述】:
我正在尝试在我的 angularjs 应用程序中实现基于 JWT 的身份验证。但我正在努力解决请求标头问题。问题是我有一个调用服务的控制器,这个控制器返回一个令牌。这一步工作正常。
'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)
}
};
}]);
但问题是我想在登录后使用请求中的“Authentication”标头将用户重定向到“secure/index”,因为我有一个 Spring 过滤器检查所有“*/secure”路径是否具有该标头.
主要的app.js如下
'use strict';
angular.module("home", ['ui.router', 'home.controllers', 'urlLanguageStorage', 'pascalprecht.translate', 'ui.bootstrap', 'ngStorage'])
.config(['$stateProvider', '$translateProvider', '$urlRouterProvider',
function($stateProvider, $translateProvider, $urlRouterProvider) {
$translateProvider.useUrlLoader("home/mensajes");
$translateProvider.useStorage("UrlLanguageStorage");
$translateProvider.preferredLanguage("en");
$translateProvider.fallbackLanguage("en");
$stateProvider
.state("home", {
url: "/",
templateUrl: "resources/js/home/views/home/home.html",
controller: "HomeController"
});
$stateProvider
.state("contacto", {
url: "/contacto",
templateUrl: "resources/js/home/views/contact/contac.html",
controller: "HomeController"
});
}
])
.run(['$localStorage', '$http', function($localStorage, $http) {
if ($localStorage.token) {
$http.defaults.headers.common.Authorization = 'Bearer ' + $localStorage.token;
}
}]);
问题是它不会重定向页面。我尝试使用 $window.href 而不是 $location ,它成功地重定向了页面,但请求中没有 auth 标头。
对此有什么想法/建议吗?请注意,我是 Angularjs 的初学者,所以可能还有更多错误。
提前致谢
【问题讨论】:
标签: javascript java angularjs spring