我正在寻找一种方法来做这两件事,首先,如果没有找到 SessionID,我想将用户重定向到登录页面,其次我想听听您关于仅在内存中持久化会话 ID(没有 cookie)的意见。
我为重定向提出的解决方案是:
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 变量中,并为每个请求将其发送到服务器。这是一种可行/安全的方法吗?你能给我一些想法吗?
谢谢!