我正在尋找一種方法來做這兩件事,首先我想重定向用戶登錄頁面,如果沒有SessionID被發現,第二我想聽聽你的關於只在內存中保留會話ID的意見(沒有cookies)。AngularJS - 重定向到登錄頁面和會話ID的持久性
我想出了重定向的解決方案是:
1 - 創建一個服務名爲OAuth的,將檢查是否SessionID的存在,如果沒有,重定向到登錄頁面,該服務還負責登錄和註銷方法。
app.factory('OAuth', ['$http', function ($http) {
var _SessionID = '';
return {
login: function() {
//Do login ans store sessionID in var _SessionID
},
logout: function() {
//Do logout
},
isLoggedIn: function() {
if(_SessionID) {
return true;
}
//redirect to login page if false
}
};
}]);
2 - 注入每個控制器中新的OAuth服務,並檢查是否用戶isLoggedIn
app.controller('myCtrl', ['$scope', 'OAuth', function ($scope, OAuth) {
//check if user is logged
OAuth.isLoggedIn();
}]);
問題:
1 - 的isLoggedIn()方法將在所有控制器被調用,所以我想知道是否有辦法做到這一點,而不必注入服務,並在每個控制器中調用它。
2 - 而不是有一個cookie來存儲sessionID我想將它保存在OAuth的_SessionID變量中,並且每個請求都將它發送到服務器。這是一種可行/安全的方法嗎?你能給我一些想法嗎?
謝謝!
不錯。感謝提示丹! – Bema
[關於該方法的寫作](http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application)也非常有幫助。 –