我是AngularJS的新手,現在我試圖用身份驗證構建我的第一個系統。一切正常,只是,當用戶刷新頁面,所有的用戶信息都不見了......AngularJs在認證後將用戶數據保存到會話中
我跟着這個教程:
http://www.sitepoint.com/implementing-authentication-angular-applications/
現在,這是我傾向於確保用戶數據保留在它應該是的位置:
當用戶登錄時,我的API以JSON的形式返回他/她的詳細信息,然後將其分別放入$rootScope
變量以用於站點以及會話中。旁邊的是,我在簽署時返回true rootscope一個變量,而假的時候沒有,像這樣:
$rootScope.loggedin = true;
$rootScope.user = data;
$window.sessionStorage["info"] = data;
// console.log($window.sessionStorage["info"]);
這一切都發生在認證的工廠。
然後,當用戶刷新,而同一工廠再次跑了,下面的函數將開始工作:
function init() {
if ($window.sessionStorage["info"]) {
$rootScope.loggedin = true;
$rootScope.user = $window.sessionStorage["info"];
info = $window.sessionStorage["info"];
}
}
init();
(我認爲這會工作,因爲文章和其他各種來源的網頁上這麼說)
然後在我的HTML,我用的loggedIn變量來確定用戶是否登錄:
<div ng-show="!loggedin">
<a href="/login" class="btn btn-default btn-flat sidebar-toggle" style="position:relative;top:-3px; right: 5px;">Log in </a>
<a class="btn btn-default btn-raised" style="background: #03A9F4; color:#fff; position:relative;top:-3px; right: 5px;">Registreer</a>
</div>
<div ng-show="loggedin">
<ul class="nav navbar-nav">
<li class="drop">
<a href="bootstrap-elements.html" data-target="#" class="dropdown-toggle" data-toggle="dropdown">{{user.username}} <b class="caret"></b></a>
<ul class="" style="z-index:99999999999;">
<li><a href="javascript:void(0)">Some log-in only stuff</a></li>
</ul>
</li>
</ul>
</div>
現在,所有這一切都工作得很好,當我是勞但是當我刷新頁面時,它會檢測到我已登錄,但我的名字只是保持空白,因爲我猜未定義。
這是爲什麼,我該如何解決?
謝謝。
網絡存儲只存儲字符串和字符串。 'user'絕對不是一個字符串。你不應該猜測'user'的值,而是檢查它。 – zeroflagL