一尘不染

记住我在Angularjs中的功能和令牌

angularjs

我正在寻找一种更好的方法来解决我的问题。我在登录表单上记得我的功能。用户单击“记住我”框,“我的API”向我发送令牌。

我的问题是,当用户返回我的网站时,存储此令牌并再次对其进行身份验证的最佳方法是什么?

我以为

  1. 创建一个Cookie并在其中存储令牌。
  2. 创建本地存储。

请给我任何可能对我有帮助的建议。


阅读 252

收藏
2020-07-04

共1个答案

一尘不染

我将document.cookie与这样的工厂代码一起使用:

创建一个cookie(例如,这个cookie在一年后过期):

app.factory('$remember', function() {
    return function(name, values) {
        var cookie = name + '=';

        cookie += values + ';';

        var date = new Date();
        date.setDate(date.getDate() + 365);

        cookie += 'expires=' + date.toString() + ';';

        document.cookie = cookie;
    }
});

该工厂删除cookie:

app.factory('$forget', function() {
    return function(name) {
        var cookie = name + '=;';
        cookie += 'expires=' + (new Date()).toString() + ';';

        document.cookie = cookie;
    }
});

然后,每当用户成功使用$ remember登录缓存时,密钥:

$remember('my_cookie_name', response.user._id);

并在登录用户时始终检查cookie是否在那里,否则请使用标准登录名并将其保存到他们的cookie中。如果未启用“记住我”功能,请忘记document.cookie

2020-07-04