Socket
Socket
Sign inDemoInstall

egg-authorization

Package Overview
Dependencies
30
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    egg-authorization

egg authorization plugin for egg


Version published
Maintainers
1
Install size
3.73 MB
Created

Readme

Source

egg-authorization

NPM version build status Test coverage npm

Egg's authorization(JSON Web Token Authentication Plug)

Install

$ npm i egg-authorization --save

Usage

// {app_root}/config/plugin.js
exports.auth = {
  enable: true,
  package: "egg-authorization"
};

Configuration

// {app_root}/config/config.default.js
'use strict';

exports.auth = {
  enable: true,
  // 是使用什么认证
  type: 'jwt',
  // jwt配置
  jwt: {
    common: {
      // 是否开启解析
      enableParse: true,
      // 是否开启验签
      enableSignature: false,
      // 是否开启错误处理
      enableOnError: true,
    },
    generate: {
      // 生成秘钥
      secret: '123456',
      // 有效时间
      exp: 3600,
    },
    parse: {
      // 需要解析 token 的位置
      tokenPos: 'headers.authorization',
      // 解析秘钥
      secret: '123456',
    },
    // 用户自定义错误
    onerror: {
      // 解析错误的时候策略 
      // ignore 忽略错误 
      // exception 抛异常
      // returnFormat 返回自定义的格式
      strategy: 'returnFormat',
      // 返回数据的格式,目前支持json 和 html
      returnType: 'json',
      json(ctx) {
        ctx.body = { msg: 'Unauthorized' };
        ctx.status = 401;
      },
      html(ctx) {
        ctx.body = '<h3>Unauthorized</h3>';
        ctx.status = 410;
      },
    },
  },

};

see config/config.default.js for more detail.

Example

// app/router.js
"use strict";

module.exports = app => {
  app.get('/login',app.controller.login.index);
};
'use strict';

module.exports = app => {
  class LoginController extends app.Controller {
    * index() {
      console.log('login userInfo body : ', this.ctx.query.user);
      this.ctx.body = this.ctx.query.user;
    }
  }
  return LoginController;
};


you can use this way to get the token context


// app/controller/test.js
("use strict");

module.exports = app => {
  class SuccessController extends app.Controller {
    index() {
        // get the token 
        const authorization = this.ctx.headers.authorization;
        const data = this.ctx.auth.decode(authorization);
        console.log(data);
        this.ctx.body = data;
    }
  }
  return SuccessController;
};

Questions & Suggestions

Please open an issue here.

License

MIT

Keywords

FAQs

Last updated on 25 Sep 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc