2016-11-19 60 views
2

在我的应用程序正在维护的URL给客户分离像如何避免登录,如果已经在角JS

myapp.localhost.com/#/customer1 myapp.localhost.com/#/customer2

登录

现在说客户1登录。然后在相同的浏览器,但在其他标签customer2输入他的网址。在这一点上,我想避免customer2登录,当他点击url时,我想再次登录时给customer1 url。

我已经使用了下面的代码。

.factory('authService', function ($rootScope, $state, $auth, $location,  $stateParams) { 
    return { 
     isLoggedin: function() { 
      console.log($auth.isAuthenticated()); 
      if (!$auth.isAuthenticated()) { 
       if($rootScope.currentUser.accessLevel == '1') 
       { 
        $rootScope.currentUser = null; 
        $location.path('/admin'); 
       } 
       else 
       { 
        $rootScope.currentUser = null; 
        //$state.go('customer',{'customerTag' : localStorage.getItem('customerTag')}); 
        $location.path("/"+localStorage.getItem('customerTag')); 
       } 
       return true; 
      } 
     } 
    }; 
}) 


.run(function($rootScope, $state, $stateParams, $location, $auth) { 
    $rootScope.$state = $state; 
    $rootScope.$on('$stateChangeStart', function(event, toState) { 
    }); 
    }); 

请建议的解决方案

+0

要澄清 - 你想要user1登录,user2使用一个新的标签,你希望他们获得登录屏幕。当user1回到他们的标签时,他们仍然登录,而user2仍然有登录屏幕?如果是这种情况,请考虑将验证令牌保存在内存中或localStorage中,但使用唯一密钥将它们分开。 – ioneyed

+0

否。如果用户1在customer1的一个选项卡中登录url并登录。然后在另一个选项卡点击customer2的url的同一个用户现在在这种情况下,我不想让他显示customer2的登录屏幕我想向他展示customer1的屏幕已经登录 –

回答

1

你可以把你的路由器配置,确保已登录的用户将被重定向到管理面板或其他任何地方“解析”键。像这样:

$stateProvider.state('login', { 
     url: '/login', 
     templateUrl: '/templates/login.html', 
     controller: 'LoginController', 
     resolve: { 
      canLogin : ['$q', 'authService', function ($q, authService) { 
       var deferred = $q.defer(); 

       if (authService.isLoggedin()) { 
        // redirect user to admin panel or any other place 
        $location.path('/admin'); 
        // location.path("/"+localStorage.getItem('customerTag')) 


        deferred.reject(); 
       } 
       else { 
        deferred.resolve(); 
       } 

       return deferred.promise; 
      }] 
     } 
    }) 

提示:避免在像isLoggedin这样的方法中更改存储空间。根据这种方法的回报,Probaly更好地更新存储。

相关问题