2016-02-02 13 views
5

मैं एक लॉग इन एपीआई है जो मैं अपने सेवापृष्ठ ताज़ा के कारण उपयोगकर्ता प्राप्त कोणीय जे एस

function logInToService(callback, errback, login, password, rememberLogin) { 
      var url = "User/Login"; 

      var authorizationHeader = {'Authorization': "Basic " + login + ":" + password}; 
      httpWrapperService.post(url, {login: login, password: password}, authorizationHeader).then(
       function success(loginToken) { 
        // transform data here 

        self.currentUser.emailAddress = login; 
        self.currentUser.password = password; 
        // store token in a cookie 
        self.currentUser.token = loginToken; 
        $rootScope.currentUser = self.currentUser; 


        if (rememberLogin) { 

         localStorage.userName=login; 
         localStorage.password=password; 
        } 

        httpWrapperService.setAuthenticationToken(loginToken); 
        callback(loginToken); 
       }, 
       function error(errorObject) { 
        errback(errorObject); 
       } 
      ); 
     } 

में और मेरे हैडर html में मैं शीर्ष पर उपयोगकर्ता नाम प्रदर्शित कर रहा हूँ यह उपयोग कर रहा हूँ में स्वचालित रूप से लॉग आउट करने जब वह Header.html

<div class="header-user-menu"> 
     <div ng-show="isUserLoggedIn() == false "> 
      <a href="" ng-click="$state.go('app.sr.login')" class="">{{'HEADER.LOGIN' | translate}}</a> 
      <!--<a ui-sref="app.sr.login" class="">{{'HEADER.LOGIN' | translate}}</a>--> 
     </div> 
     <div ng-show="isUserLoggedIn()" class="userName">{{'HEADER.WELCOME' | translate}} {{currentUser.emailAddress}}</div> 

    </div> 

और जे एस फ़ाइल में लॉग होता है यहाँ है

(function() { 
    'use strict'; 

    angular 
     .module('safe-repository') 
     .controller('AppLayoutCtrl', appLayoutCtrl); 

    // Implementation of controller 
    appLayoutCtrl.$inject = ['$rootScope', '$scope']; 

    function appLayoutCtrl($rootScope, $scope) { 


     $scope.isUserLoggedIn = isUserLoggedIn; 

     function isUserLoggedIn() { 
      if ($rootScope.currentUser 
       && $rootScope.currentUser.emailAddress != null 
       && $rootScope.currentUser.emailAddress != '') { 
       return true; 
      } 
      return false; 
     } 

    } 
})(); 

और यहाँ मैं एक पंजीकरण सेवा है जहाँ मैं logInToService विधि परिभाषित किया है

function registrationService($rootScope, httpWrapperService, $modal, $state, $cookieStore) { 
     var self = this; 
     // expose functions 
     self.hasUserAccessToLevel = hasUserAccessToLevel; 
     self.logInToService = logInToService; 
     self.getCurrentUserToken = getCurrentUserToken; 
     self.showRegistrationViewForLevel = showRegistrationViewForLevel; 
     self.currentUser = { 
      //emailAddress: '', 
      //password: '', 
      //token: '' 
     } 

     $rootScope.currentUser = null; 
     self.currentUserToken = null; 

function logInToservice (------){----}})(); 

समस्या यह है कि हर बार जब उपयोगकर्ता प्रेस पृष्ठ ताज़ा F5, उपयोगकर्ता लॉग आउट हो जाता है। भले ही मैं स्थानीय स्टोरेज में डेटा स्टोर करने की कोशिश कर रहा हूं, लेकिन वास्तव में मुझे नियंत्रण का प्रवाह नहीं मिल रहा है।

उत्तर

6

आप localStorage में डेटा को बचाने के लिए कोशिश कर रहे हैं, लेकिन आप इसे नहीं पढ़ रहे हैं: इस लिंक पर एक नजर है। currentUser परिवर्तनीय आपके पास उपयोगकर्ता डेटा है जो एक नियमित जावास्क्रिप्ट चर है जो पृष्ठ को फिर से लोड करते समय रीसेट हो जाता है।

आप कुछ इस तरह करने की जरूरत है:

// ... 
// user logs in, remember it into the local storage 
// Note: is is better to use it via $window.localStorage 
$window.localStorage.setItem('user', JSON.stringify(user)); 
this.currentUser = user; 

//... 
// function to get the user, if this.currentUser is not set, 
// try to load from the local storage 
getUser: function() { 
    if (this.currentUser) { 
     return this.currentUser; 
    } 
    var storageUser = $window.localStorage.getItem('user'); 
    if (storageUser) { 
    try { 
     this.user = JSON.parse(storageUser); 
    } catch (e) { 
     $window.localStorage.removeItem('user'); 
    } 
    } 
    return this.currentUser; 
} 

// you may also want to remove the user data from storage when he logs out 
logout: function() { 
    $window.localStorage.removeItem('user'); 
    this.currentUser = null; 
}, 
0

आपको लॉगिन के लिए सत्र बनाना होगा ताकि पेज रीफ्रेश के बाद यह लॉग न हो।

http://maffrigby.com/maintaining-session-info-in-angularjs-when-you-refresh-the-page/

+0

असल समस्या registrationService पुन: लोड और उसकी वजह से, $ rootScope.currentUser शून्य पर सेट कर रहा है जा रहा है – shreyansh

संबंधित मुद्दे