0.0.5 • Published 3 years ago

shuke.authlib v0.0.5

Weekly downloads
51
License
ISC
Repository
-
Last release
3 years ago

树课平台验证库 shuke.authlib

安装

将工程的 Release 发布包 shuke.authlib.tgz

下载至要安装的项目目录 (如deps) 下,

然后执行

npm i ./deps/shuke.authlib.tgz

即可完成安装

远程用法

无论与树课服务器是否在同一个内网, 都可以使用远程验证器。

远程验证器与本地验证器共同实现了同一个接口。

import * as AuthLib from "shuke.authlib";

const authHelper = new AuthLib.ShukeAuthHelper("jigsaw://127.0.0.1/shuke.auth");

authHelper.on("ready",async ()=>{
    const sess_info = await authHelper.auth({ token : "IAMTOKEN" })
    console.log(sess_info);

});

本地用法

若你的应用程序与树课服务器在同一个内网, 可考虑使用本地验证器加速验证.

import * as AuthLib from "shuke.authlib";

const mysql_config = {
    host:"127.0.0.1",
    port:3306,
    user:"root",
    password:"PASSWORD",
    database:"testdb"
};

const authHelper = new AuthLib.AuthHelper(mysql_config);

authHelper.on("ready",async ()=>{
    const sess_info = await authHelper.auth({ token : "IAMTOKEN" })
    console.log(sess_info);
});

错误处理

目前总共有三种类型的错误以及两种已经编码了的错误,在使用验证器的验证方法时会发生.

6001: UnAuthError 代表验证信息有误, 无法找到与该验证信息相关的会话信息
6002: UnRegisterError 代表该账户还未注册或手机号还未验证

其它错误: 其它错误将不会是上面所述的代码,通常是网络超时,参数错误等.

通常的错误处理方式:

const helper = new AuthLib.ShukeAuthHelper();

...

try{
    await helper.auth({ token : "IAMTOKEN" });
}catch(err){
    if(err.code == 6001){
        ctx.status = 403;
        ctx.body = "验证失败, 请重新登录";
    }else if(err.code == 6002){
        ctx.status = 403;
        ctx.body = "您的账户还未验证手机号, 请先通过验证.";
    }else{
        ctx.status = 500;
        ctx.body = `未预料的内部错误,发生了: ${err.message}`;
    }
}

良好的 TypeScript 支持

虽然本库完美支持 JavaScript 的引用,您可以这样使用:

const { ShukeAuthHelper } = require("shuke.authlib");

这样你仍然可以在 vscode 等代码编辑器获得到基于 TS 的代码提示, 但是你不会受到任何类型的约束

使用 TypeScript 构建工程并这样引入本库:

import { ShukeAuthHelper } from "shuke.authlib";

你将获得完全的 TypeScript 声明支持与类型约束.

中间件

你可以使用使用本库提供的中间件, 也可以自己自制中间件。 此中间件同时支持koa与jigsaw-rpc

import * as AuthLib from "shuke.authlib";

const authHelper = new AuthLib.AuthHelper("jigsaw://127.0.0.1/shuke.auth");
const ware = new AuthLib.Useware(authHelper);

//构造器的第一个参数可以是任意一个实现了IAuthHelper接口的实例

...

koa.use(ware.handle())

koa.use(async (ctx,next)=>{

    console.log(ctx.shuke_sessinfo);
})
...

//或者
jigsaw.use(ware.handle())

jigsaw.use(async (ctx.next)=>{

    console.log(ctx.shuke_sessinfo);
});