我正在寻找一种方法来完成这两件事,首先,如果没有找到 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 服务并检查用户是否已登录
app.controller('myCtrl', ['$scope', 'OAuth', function ($scope, OAuth) {
//check if user is logged
OAuth.isLoggedIn();
}]);
问题:
1 - isLoggedIn() 方法将在所有控制器中调用,所以我想知道是否有一种方法可以做到这一点,而不必注入服务并在每个控制器中调用它。
2 - 我不想使用 cookie 来存储 sessionID,而是将其保存在 OAuth 的 _SessionID 变量中,并针对每个请求将其发送到服务器。这是一种可行/安全的方法吗?你能给我一些想法吗?
Thanks!