【问题标题】:Sails JS - Remove existing JWTSails JS - 删除现有的 JWT
【发布时间】:2016-01-10 07:15:07
【问题描述】:

我按照本教程 https://ericswann.wordpress.com/2015/04/24/nozus-js-1-intro-to-sails-with-passport-and-jwt-json-web-token-auth/ 进行操作,并且运行良好。唯一缺少的是注销功能。我读到我可以从客户端删除令牌,但我仍然认为将它从服务器中删除是一种更好的方法。

这是我的 AuthController.js

var passport = require('passport');
//Triggers when user authenticates via passport
function _onPassportAuth(req, res, error, user, info) {
    if (error) return res.serverError(error);
    if (!user) return res.unauthorized(null, info && info.code, info && info.message);
    return res.ok({
        // TODO: replace with new type of cipher service
        token: HashService.createToken(user),
        user: user
    });
}

module.exports = {
    signup: function (req, res) {
        User.create(_.omit(req.allParams(), 'id')).then(function (user) {
            return {
                // TODO: replace with new type of cipher service
                token: HashService.createToken(user),
                user: user
            };
        }).then(res.created).catch(res.serverError);
    },

    signin: function (req, res) {
        passport.authenticate('local', _onPassportAuth.bind(this, req, res))(req, res);
    }
};

如何销毁令牌?

【问题讨论】:

  • 你有什么问题?
  • 当我想注销时如何销毁令牌。对不起,我的错。

标签: node.js security sails.js token jwt


【解决方案1】:

您不需要销毁令牌。

这就是令牌的概念 - 没有登录\注册功能,只有可以验证(或不验证)的令牌。

如果您想“注销”用户,则只需从客户端存储中删除令牌即可。无论如何,令牌在您更改密钥或证书或过期之前都是有效的。

UPD:

但我仍然认为将其从服务器中删除是一种更好的方法。

服务器没有存储任何东西。

【讨论】:

  • 我明白了。但是用于令牌黑名单的 MongoDB 集合呢?
  • @ghaiklor 我也想知道当他向 /logout 路由发出请求时如何从客户端删除令牌?
  • @Lexynux 只是从存储中删除它。有什么问题?
猜你喜欢
  • 1970-01-01
  • 2017-01-20
  • 2019-07-10
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多