我有一个角项目,我想要创建身份验证机制,所以我有以下控制器:
angular.module('authModule')
.controller('LoginCtrl', function($rootScope, $location, loginRESTService, UserService){
var login = this;
function signIn(user) {
loginRESTService.login(user)
.then(function(response) {
console.log(response);
user.access_token = response.user_id;
UserService.setCurrentUser(user);
$rootScope.$broadcast('authorized');
$location.path("/formList");
});
}
})另外,我有一个主控制器,它有以下方法
angular.module('authModule')
.controller('MainCtrl', function ($rootScope, $state, LoginService, UserService) {
var main = this;
$rootScope.$on('authorized', function() {
console.log("ENTRE CON PERMISO");
main.currentUser = UserService.getCurrentUser();
});
$rootScope.$on('unauthorized', function() {
console.log("ENTRE SIN PERMISO");
main.currentUser = UserService.setCurrentUser(null);
$state.go('login');
});
}) 问题是‘授权’和‘未经授权’从来没有被调用,也不知道为什么
我的app.js文件
angular
.module('pysFormWebApp', [
...
'translateModule',
'formModule',
'authModule'
])
.config(function ($routeProvider, $httpProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl',
controllerAs: 'main'
})
.when('/login', {
templateUrl: 'views/auth/login.html',
controller: 'LoginCtrl',
controllerAs: 'login'
})
.otherwise({
redirectTo: '/'
}); 我的index.html (只有一部分是因为它太长了,是生成溜溜球角的索引)
<div ng-controller="MainCtrl as main" >
<button ng-if="main.currentUser" class="btn btn-default navbar-btn" ng-click="main.logout()">Logout <strong>{{main.currentUser.name}}</strong>
</button>
</div>发布于 2015-11-12 17:24:33
首先,您不是在广播“未经授权”事件。正因为如此,$rootScope.on('unauthorized')无法工作。
第二。可能是在登录控制器之前运行主控制器,因此控制器没有捕获事件。
如果它能解决你的问题就告诉我。
https://stackoverflow.com/questions/33677392
复制相似问题