egg-passport-jwt
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

egg-passport-jwt

NPM version build status Test coverage David deps Known Vulnerabilities npm download

Install

$ npm i egg-passport-jwt --save

Usage

// {app_root}/config/plugin.js
exports.passportJwt = {
  enable: true,
  package: 'egg-passport-jwt',
};

Configuration

// {app_root}/config/config.default.js
exports.passportJwt = {
  secret: 'your jwt secret or key',
};

see passport-jwt for more detail.

Example

Authenticate requests

Use app.passport.authenticate() specifying 'jwt' as the strategy.

// app/router.js
module.exports = app => {
  const { router, controller } = app;
  const jwt = app.passport.authenticate('jwt', { session: false, successReturnToOrRedirect: null });
 
  router.get('/', controller.home.index);
  router.get('/protected', jwt, controller.home.index);
};

Include the JWT in requests

The method of including a JWT in a request depends entirely on the extractor function you choose. For example, if you use the fromAuthHeaderAsBearerToken extractor (default), you would include an Authorization header in your request with the scheme set to bearer. e.g.

Authorization: bearer JSON_WEB_TOKEN_STRING...

Verify and store user

Use app.passport.verify(async (ctx, user) => {}) hook:

// app.js
module.exports = app => {
  app.passport.verify(async (ctx, user) => {
    // check user
    assert(user.provider, 'user.provider should exists');
    assert(user.payload, 'user.payload should exists');
 
    // find user from database
    const existsUser = await ctx.model.User.findOne({ id: user.payload.sub });
    if (existsUser) return existsUser;
 
    // or you could create a new user
  });
};

Questions & Suggestions

Please open an issue here.

License

MIT

Package Sidebar

Install

npm i egg-passport-jwt

Weekly Downloads

79

Version

1.0.0

License

MIT

Unpacked Size

6.87 kB

Total Files

6

Last publish

Collaborators

  • chunkai1312