将cookie中的jwt保存到本地存储是不是很安全?

时间:2017-09-14 01:11:13

标签: javascript angularjs security cookies jwt

为了让我的Twitter登录使用jwt会话和angularjs,我创建了一个带有twitter用户名和显示名称的jwt,将其作为cookie传递并保存到本地存储。这是一些相关的代码:

登录用户并保存cookie:

app.get('/login/twitter', passport.authenticate('twitter'));
    app.get('/login/twitter/callback', function(req, res) {
        passport.authenticate('twitter' , {session: false} , function(err, user, info) {
            if(err) {
                console.log(err);
            }
            var token;
            token = user.generateTwitterJwt();
            // res.status(200);
            // res.json({
            //  "token" : token
            // });
            res.cookie('jwt' , token);
            res.render('login.jade');
        })(req, res);
    });

保存到本地存储并删除Cookie:

$scope.twitterTest = function() {
    var jwtCookie = $cookies.get('jwt');
    authenticationService.saveToken(jwtCookie).error(function() {
        if(err) {
            console.log(err);
        }
    }).then(function() {
        $cookies.remove('jwt');
        var url = '/profile';
        $window.location.href = url;
    });
}

我想知道这样做是否有任何缺点。有安全问题吗?我正在尝试使用jwt和angularjs保存到localstorage进程,因为这是我设置本地登录的方式。

1 个答案:

答案 0 :(得分:0)

您可以使用浏览器sessionStorage而不是localStorage,SessionStorage更安全,因为它将随浏览器会话结束而删除。并直接将其存储在sessionStorage而不是cookie中,在这种情况下不需要cookie。