egg-passport-jwt
v1.0.0
Published
jwt passport plugin for egg
Downloads
259
Maintainers
Readme
egg-passport-jwt
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.