$ stateChangeSuccess在Angularjs中不使用localforage

时间:2016-06-07 06:36:50

标签: javascript angularjs

我正在尝试使用ui-router实现用户身份验证,但无法做到。

使用header.html和HeaderController显示菜单栏或login.html和loginController用于登录功能,然后登录后有其他页面user.html我想在用户位于user.html页面时显示菜单,

首先以用户登录方式处理LoginController将用户服务并使用accesstoken设置localforage并重定向到user.html。在头控制器之间我使用$ stateChangeSuccess来检查用户是否从localforage accessToken登录,如果accessToken在那里我检查了isLoggedIn标志为true,这是在header.html上显示菜单栏。但是第一次登录后我没有看到任何菜单需要刷新才能看到那里的菜单。

服务。

    loginUser : function(user) {
        var deferred = $q.defer();
        $http({
            method : 'POST',
            url : configurations.API_URL + '/auth ',
            data : angular.toJson(user),
            headers : {
                'Content-Type' : 'application/json'
            },
        }).success(function(data) {
            if (data && data.access_token) {
                fstorage.setItem('accessToken', data.access_token, '').then(function(data) {

                }, function(error) {

                });
            }
            deferred.resolve(data);
        }).error(function(error) {
            deferred.reject(error);
        });

        return deferred.promise;
    },
在headerController上

    $scope.$on('$stateChangeSuccess', function($event, current) {
        $scope.isLoggedIn = false;
        var pathname = "action-pending";
        if ($state) { ;
            pathname = $state.url().replace('/', '');
        }
        $scope.selectedMenu = pathname;
        fstorage.getItem('accessToken').then(function(data) {
            if (data) {
                $scope.isLoggedIn = true;
            }
        }, function(error) {

        });

    });
用于显示菜单的header.html上的

。 使用ng-if =“isloggedIn”来显示或隐藏菜单

任何人都可以在我错的地方帮忙。

0 个答案:

没有答案