Это мой роутер:
expressJwt = require('express-jwt')
router.post '/signin' , controller.signUp
router.get '/signout/:id' , expressJwt(secret:secretToken, isRevoked: isRevokedCallback), controller.signOut
Это моя конечная точка signOut:
exports.signOut = (req, res) ->
console.log res.user
Что мне нужно указать в моей конечной точке, чтобы отозвать токен.
Я попытался включить эту функцию в свой маршрутизатор:
isRevokedCallback = (req, payload, done) ->
for key, value of payload
console.log(key + ' ' + value)
# The below part does not work. Also I don't know what data should refer to
issuer = payload.iss
tokenId = payload.jti
data.getRevokedToken issuer, tokenId, (err, token) ->
if err
return done(err)
done null, ! !token
return
Понимание списка действительно выходит из системы:
iat 1436437563
exp 1436653563
И в моей конечной точке также есть объект пользователя, вышедший из системы:
user [object Object]
Теперь, как собрать части вместе и отозвать токен JWT, чтобы пользователь, который является токеном, больше не мог войти в систему с этим токеном (или, альтернативно, немедленно истечь срок его действия)?
Вот пример журнала консоли моего пользовательского объекта:
{ user:
{ __v: 0,
_id: '559e6aad50cdf686db31ea55',
local:
{ password: '$2a$08$YBvzOWADlw9tZCDh3aG/j.gV.Tbaesk3pLbbiHL/lkGaC08bSbGmy',
email: '[email protected]' } },
iat: 1436445357,
exp: 1436661357 }
GET /user/signout/559e6aad50cdf686db31ea55 401 2.530 ms - 12
ERROR:Error: expected 200 "OK", got 401 "Unauthorized"
1) should sign out via passport.js