Sails JS - 删除现有的 JWT

Posted

技术标签:

【中文标题】Sails JS - 删除现有的 JWT【英文标题】:Sails JS - Remove existing 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);
    
;

如何销毁令牌?

【问题讨论】:

你有什么问题? 当我想注销时如何销毁令牌。对不起,我的错。 【参考方案1】:

您不需要销毁令牌。

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

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

UPD:

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

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

【讨论】:

我明白了。但是用于令牌黑名单的 MongoDB 集合呢? @ghaiklor 我也想知道当他向 /logout 路由发出请求时如何从客户端删除令牌? @Lexynux 只是从存储中删除它。有什么问题?

以上是关于Sails JS - 删除现有的 JWT的主要内容,如果未能解决你的问题,请参考以下文章

SailsJS - 将sails.io.js 与JWT 一起使用

从现有的 Visual Studio 项目中删除未使用的 js 和 css 文件

如何将 Sails.js 更新到最新版本?

页面刷新时 JWT Token 已从标题中删除,如何修复?

如何在 Sails.js 中实现连接多方

使用 passport.js、sails.js API 和 ember.js 登录 Facebook