Egg's JWT(JSON Web Token Authentication Plugin)
egg-jwt@3 use koa-jwt2
$ npm i egg-jwt --save
or
yarn add egg-jwt
// {app_root}/config/plugin.js
exports.jwt = {
enable: true,
package: "egg-jwt"
};
// {app_root}/config/config.default.js
exports.jwt = {
secret: "123456"
};
see config/config.default.js for more detail.
// app/router.js
"use strict";
module.exports = app => {
app.get("/", app.jwt, "render.index"); // use old api app.jwt
app.get("/login", "login.index");
app.get("/success", "success.index"); // is setting in config.jwt.match
};
// app/controller/render.js
("use strict");
module.exports = app => {
class RenderController extends app.Controller {
*index() {
this.ctx.body = "hello World";
}
}
return RenderController;
};
// app/controller/login.js
("use strict");
module.exports = app => {
class LoginController extends app.Controller {
*index() {
this.ctx.body = "hello admin";
}
}
return LoginController;
};
// app/controller/success.js
("use strict");
module.exports = app => {
class SuccessController extends app.Controller {
*index() {
this.ctx.body = this.ctx.state.user;
}
}
return SuccessController;
};
Then
curl 127.0.0.1:7001
// response 401
curl 127.0.0.1:7001/login
// response hello admin
curl -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0OTAwMTU0MTN9.ehQ38YsRlM8hDpUMKYq1rHt-YjBPSU11dFm0NOroPEg" 127.0.0.1:7001/success
// response {foo: bar}
const token = app.jwt.sign({ foo: 'bar' }, app.config.jwt.secret);
For more options, check here
Please open an issue here.