eggjs登陆、jwt路由加权鉴

本文记录了用阿里企业级Node框架Eggjs实现登陆,借助jwt依赖在路由中添加权鉴的例子。需连接MySQL数据库,介绍了启动、部署步骤,包括执行SQL创建user表,还说明了如何用Postman测试各接口,以及路由加权鉴的方法。

本文记录一下用阿里企业级node框架eggjs实现登陆,用jwt依赖在路由中添加权鉴的例子。需要连接mysql数据库。查看 egg 文档

启动

$ npm i
$ npm run dev
$ open http://localhost:7001/

部署

$ npm start
$ npm stop

说明

执行sql语句创建user表

CREATE TABLE `user` (
  `user_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID(主键)',
  `name` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',
  `password` char(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码',
  `real_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '真实姓名',
  `user_role` int(8) DEFAULT NULL COMMENT '用户权限',
  `headimg` varchar(32) DEFAULT NULL COMMENT '用户头像',
  `login_time` bigint(16) DEFAULT NULL COMMENT '上次登陆时间',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
可用postman测试
  • 先用put方式请求http://127.0.0.1:7001/user,创建一个用户,body传参username和password,创建一条用户记录
  • 然后post方式请求http://127.0.0.1:7001/user/login,调用登陆接口,body传参username和password就是刚才创建的用户名和密码,登陆成功后返回json格式如下:
{
   "code": 200,
   "msg": "登录成功",
   "data": {
       "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRvbmciLCJpYXQiOjE2MDIyOTkyNDd9.28iIiOfW8sZkbWtAyCAB0VtGeJZVT-YSFPqJAwlNsVY"
   }
}

data中返回标准格式的token

  • 用get方式请求http://127.0.0.1:7001/user接口,获取全部用户表数据。此接口没加权鉴。
  • 用get方式请求http://127.0.0.1:7001/user/:id,获取某一条用户数据,此接口加了权鉴,Headers部分要传Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRvbmciLCJpYXQiOjE2MDIyOTkyNDd9.28iIiOfW8sZkbWtAyCAB0VtGeJZVT-YSFPqJAwlNsVY。(token示例)
    Bearer后面加一个空格再加之前登陆成功后返回的token,路由中的:id部分传的是用户表中此用户的user_id字段。

关于如何加权鉴

路由 /app/router.js

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller, jwt } = app;
  ...
  
  // 获取全部用户数据 不做鉴权
  router.get('/user', controller.user.index);

  // 获取单独某一条用户数据,加权鉴
  router.get('/user/:id', jwt, controller.user.show);
  ...
};

const { router, controller, jwt } = app; 定义jwt,在路由的参数中,第二个参数是否传jwt,决定是否加权鉴。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值