Как отозвать токены express-jwt в express.js/passport-http-bearer

Это мой роутер:

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

person Steve K    schedule 09.07.2015    source источник
comment
Привет, могу я узнать, как вы используете coffeescript в expressjs?   -  person nobody    schedule 20.01.2016


Ответы (1)


Мне удалось это, вернув пару ключей token: false и значений. Другой идеей было бы отправить токен с expirationInSeconds: 1. Старый токен по-прежнему будет действителен, и его нельзя назвать очень безопасным. Поэтому установите очень низкий срок действия токена по умолчанию или перейдите к другому варианту, например к черным спискам.

person Steve K    schedule 15.07.2015