gpt4 book ai didi

javascript - Angularjs 中的 localStorage 在选项卡之间共享

转载 作者:行者123 更新时间:2023-12-03 11:34:11 25 4
gpt4 key购买 nike

目前我正在使用 $window.sessionStorage.token,因此如果用户刷新页面,它会保持其 session 而不会丢失任何数据。但现在我想在不同的选项卡中打开,但它要求我再次登录。经过一些研究后,我发现我必须使用 localStorage。

问题问题 -

1) 如何使用本地存储在选项卡之间共享 session ?2)这个问题还有其他方法吗?

我已经检查了大部分帖子,但没有给出很好的理解。如果有人可以通过基本示例帮助理解这一点,我们将非常感激。

最佳答案

您需要一个服务来注入(inject)每个 Controller 或 $rootScope 以进行统一访问。我正在用一个 Angular 应用程序做同样的事情。这是我的版本,可以帮助您入门。您在代码中看到的 Authutils 服务是斯坦福 Javascript 加密库的实现,地址为 http://bitwiseshiftleft.github.io/sjcl/为存储的资源添加一层安全性,因为它们可以通过浏览器调试工具轻松查看:

angular.module('myApp').service('Dataservice', [
'Authutils',
function Dataservice(Authutils) {
var _test = [1, 2, 3];

var hasStorage = function() {
if (Modernizr.localstorage) {
return true;
} else {
return false;
}
};

var _get = function(key, make, init_data) {
var out = [];
var create = typeof make !== "undefined" ? make : false;
var data = typeof init_data !== "undefined" ? init_data : false;

if (hasStorage()) {
var sval = localStorage.getItem(key);
if (!!sval) {
try {
sval = Authutils.decrypt(sval);
out = JSON.parse(sval);
} catch (e) {

}
} else {
if (create) {
if (data) {
data = Authutils.encrypt(data);
_set(key, data);
} else {
_set(key, []);
}
}
}
}
return out;
};

var _set = function(key, value) {
if (hasStorage()) {
var subject = JSON.stringify(value);
localStorage.setItem(key, Authutils.encrypt(subject));
return true;
}
return false;
};

var _drop = function(key) {
if (hasStorage()) {
localStorage.removeItem(key);
return true;
}
return false;
};

var _nuke = function() {
if (hasStorage()) {
localStorage.clear();
return true;
}
return false;
};

var _push = function(key, value) {
var out = [];
if (hasStorage()) {
var current = JSON.parse(localStorage.getItem(key));
if (!!current) {
current.push(value);
_set(key, current);
}
}
return out;
};

return {
get: function(key, make, init_data) {
return _get(key, make, init_data);
},
set: function(key, value) {
_set(key, value);
},
push: function(key, value) {
_push(key, value);
},
trash: function(key) {
_cut(key);
},
nuke: function() {
_nuke();
},
test: function() {
return _test;
}
};
}
]);

关于javascript - Angularjs 中的 localStorage 在选项卡之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com