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 一起使用