Javascript 记住Angularjs中的功能和令牌
我正在寻找更好的方法来解决我的问题。我的登录表单上有“记住我”功能。当用户单击“记住我”框时,我的API将向我发送令牌 我的问题是,当用户返回我的站点时,存储此令牌并再次验证用户身份的最佳方式是什么 我想Javascript 记住Angularjs中的功能和令牌,javascript,angularjs,cookies,Javascript,Angularjs,Cookies,我正在寻找更好的方法来解决我的问题。我的登录表单上有“记住我”功能。当用户单击“记住我”框时,我的API将向我发送令牌 我的问题是,当用户返回我的站点时,存储此令牌并再次验证用户身份的最佳方式是什么 我想 创建一个Cookie并将令牌存储在那里 创建本地存储 请给我任何可能对我有帮助的建议。我会使用document.cookie,出厂代码如下: 创建cookie(例如,此cookie将在一年内过期): 此工厂将删除cookie: app.factory('$forget', function()
请给我任何可能对我有帮助的建议。我会使用document.cookie,出厂代码如下: 创建cookie(例如,此cookie将在一年内过期): 此工厂将删除cookie:
app.factory('$forget', function() {
return function(name) {
var cookie = name + '=;';
cookie += 'expires=' + (new Date()).toString() + ';';
document.cookie = cookie;
}
});
然后,每当用户使用$MEMORE成功登录缓存密钥时:
$remember('my_cookie_name', response.user._id);
并且在登录用户时始终检查cookie是否存在,否则请使用标准登录并将其保存到cookie中。如果未启用“记住我”,请忘记文档。cookie使用ngCookies: ngCookies模块为读取和写入浏览器cookies提供了方便的包装 首先,使用bower
bower安装程序在应用程序中安装ngCookies-cookies@X.Y.Z
或手动
然后在你的应用程序中注入ngCookies
,就像
angular.module('app',['ngCookies')代码>
然后简单地使用like
angular.module('App', ['ngCookies'])
.controller('demo', ['$cookies', function($cookies) {
// Setting a cookie
$cookies.put('cookieName', 'object');
// Retrieving a cookie
var sample= $cookies.get('cookieName');
// Remove a cookie
$cookies.remove('cookieName');
}]);
如果您使用的是令牌身份验证/Restful API,那么首选的方法是使用localStorage
。然而,使用这种方法,除非用户选择“记住我”,否则他们需要再次登录到他们打开的每个浏览器选项卡。因为使用sessionStorage
保存的每个项目仅对单个选项卡可用。
我创建了一个库来简化这个过程,并跨所有打开的选项卡同步会话数据。用户体验类似于cookie身份验证提供的体验。
通过此操作,您可以执行以下操作:
if (rememberMe)
storageManager.savePermanentData('data', 'key');
else
storageManager.saveSyncedSessionData('data', 'key');
您可以通过var myData=storageManager.getData('key')检索数据代码>
您可以从以下链接下载此库:
(函数(角度){
"严格使用",;
angular.module('app',['ngCookies']))
.controller('mainController',['$cookies','$timeout',函数($cookies,$timeout){
var vm=这个;
vm.message='';
vm.getCookies=getCookies;
vm.setCookies=setCookies;
vm.clearCookies=clearCookies;
getCookies();
函数getCookies()
{
vm.var1=$cookies.get('var1');
vm.var2=$cookies.get('var2');
}
函数setCookies()
{
$cookies.put('var1',vm.var1);
$cookies.put('var2',vm.var2);
if(vm.var1&&vm.var2)
showMessage('Cookies设置成功!');
其他的
showMessage('请输入一些值');
}
函数clearCookies()
{
$cookies.remove('var1');
$cookies.remove('var2');
getCookies();
showMessage('Cookies已成功清除!');
}
函数showMessage(msg)
{
vm.message=msg;
$timeout(函数(){
vm.message='';
}, 2000);
}
}]);
})(窗口角度)代码>
正文
{
填充:10px;
}
样品
输入一些值,按“设置cookies”,然后刷新页面。(右上角的刷新按钮)
VAR1的Cookies
VAR1的Cookies
清楚的
设置cookies
{{ctrl.message}
回答很好:)我会尽力让你知道。你能解释一下如何检查我的cookie是否设置好吗?目前我使用的是布尔标志,但不起作用。有什么想法吗?cookie即使过期也不会从浏览器中删除。@willjlong我们如何检查cookie?然后根据cookie应用条件。你能进一步解释一下吗?这应该作为一个公认的答案,因为在代码中使用DOM对象不是一个好的实践。
if (rememberMe)
storageManager.savePermanentData('data', 'key');
else
storageManager.saveSyncedSessionData('data', 'key');