Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
澄清寰宇
koa2-test-api
提交
83bea10b
K
koa2-test-api
项目概览
澄清寰宇
/
koa2-test-api
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
koa2-test-api
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
83bea10b
编写于
9月 03, 2021
作者:
Y
yinpengxiao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
追加注释
上级
8e0e211f
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
59 addition
and
37 deletion
+59
-37
src/app.js
src/app.js
+6
-5
src/cache/_redis.js
src/cache/_redis.js
+6
-2
src/config/config.js
src/config/config.js
+4
-2
src/middleWares/auth.js
src/middleWares/auth.js
+16
-6
src/middleWares/exception.js
src/middleWares/exception.js
+2
-3
src/model/type/index.js
src/model/type/index.js
+2
-2
src/routes/api/users.js
src/routes/api/users.js
+1
-9
src/service/user.js
src/service/user.js
+11
-5
src/utils/crypto.js
src/utils/crypto.js
+11
-3
未找到文件。
src/app.js
浏览文件 @
83bea10b
/*
* @Author: your name
* @Date: 2021-08-30 10:58:19
* @LastEditTime: 2021-09-03 16:
15:41
* @LastEditTime: 2021-09-03 16:
54:53
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \koa2-test-api\app.js
...
...
@@ -16,7 +16,7 @@ const logger = require('koa-logger')
require
(
'
module-alias/register
'
);
const
InitManager
=
require
(
'
@models/core/init
'
);
const
catchError
=
require
(
'
@models/middleWares/exception
'
);
//全局错误捕获
app
.
use
(
catchError
)
// error handler
onerror
(
app
)
...
...
@@ -26,20 +26,21 @@ app.use(bodyparser({
}))
app
.
use
(
json
())
app
.
use
(
logger
())
//静态资源
app
.
use
(
require
(
'
koa-static
'
)(
__dirname
+
'
/public
'
))
//静态文件
app
.
use
(
views
(
__dirname
+
'
/views
'
,
{
extension
:
'
ejs
'
}))
// logger
// logger
--日志
app
.
use
(
async
(
ctx
,
next
)
=>
{
const
start
=
new
Date
()
await
next
()
const
ms
=
new
Date
()
-
start
console
.
log
(
`
${
ctx
.
method
}
${
ctx
.
url
}
-
${
ms
}
ms`
)
})
//路由全局入口init
InitManager
.
initCore
(
app
);
app
.
on
(
'
error
'
,
(
err
,
ctx
)
=>
{
console
.
error
(
'
server error
'
,
err
,
ctx
)
...
...
src/cache/_redis.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-09-03 09:15:37
* @LastEditTime: 2021-09-03 1
0:36:24
* @LastEditTime: 2021-09-03 1
6:45:46
* @LastEditors: Please set LastEditors
* @Description: redis缓存
* @FilePath: \koa2-test-api\src\cache\_redis.js
...
...
@@ -37,7 +37,11 @@ function set(key, val, timeout = 60 * 60) {
redisClient
.
set
(
key
,
Buffer
.
from
(
val
,
'
utf-8
'
));
redisClient
.
expire
(
key
,
timeout
);
}
/**
*
* @param {string} key redis键名
* @returns
*/
function
get
(
key
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
redisClient
.
get
(
key
,
(
err
,
val
)
=>
{
...
...
src/config/config.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-08-31 13:17:20
* @LastEditTime: 2021-09-03 1
5:15:06
* @LastEditTime: 2021-09-03 1
6:47:14
* @LastEditors: Please set LastEditors
* @Description: 配置文件
* @FilePath: \koa2-test-api\src\config\config.js
*/
module
.
exports
=
{
environment
:
'
dev
'
,
//mysql数据库配置
database
:
{
dbName
:
'
work_week_report
'
,
host
:
'
localhost
'
,
...
...
@@ -23,10 +23,12 @@ module.exports = {
acquire
:
60000
,
}
},
//jwt加密和超时
security
:
{
secretKey
:
'
YpxXyy@#X[0-9a-Z]()
'
,
expiresIn
:
60
*
60
},
//redis数据连接
redis
:
{
port
:
6379
,
host
:
'
127.0.0.1
'
,
...
...
src/middleWares/auth.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-08-31 13:46:30
* @LastEditTime: 2021-09-03
09:04:39
* @LastEditTime: 2021-09-03
16:48:54
* @LastEditors: Please set LastEditors
* @Description: 授权中间件
* @FilePath: \koa2-test-api\src\middleWares\auth.js
*/
const
jwt
=
require
(
'
jsonwebtoken
'
);
/**
* 权限验证类
*/
class
Auth
{
constructor
()
{
}
constructor
()
{};
/**
* token验证
* @param {string} token 用户token
* @returns
*/
verToken
(
token
)
{
/**
* 变成promise操作
*/
return
new
Promise
((
resolve
,
reject
)
=>
{
var
userInfo
=
jwt
.
verify
(
token
.
split
(
'
'
)[
1
],
global
.
config
.
security
.
secretKey
);
console
.
log
(
'
ver获取用户信息:
'
,
userInfo
);
...
...
@@ -22,6 +29,9 @@ class Auth {
console
.
log
(
'
ver-fail:
'
,
err
);
})
}
/**
* 当前用户信息验证函数m
*/
get
m
()
{
return
async
(
ctx
,
next
)
=>
{
const
userToken
=
await
this
.
verToken
(
ctx
.
request
.
header
.
authorization
);
...
...
src/middleWares/exception.js
浏览文件 @
83bea10b
/*
* @Author:尹鹏孝
* @Date: 2021-08-31 13:28:48
* @LastEditTime: 2021-09-03
08:14:5
7
* @LastEditTime: 2021-09-03
16:49:2
7
* @LastEditors: Please set LastEditors
* @Description: 捕获异常生成返回的接口
* @FilePath: \koa2-test-api\src\middlewares\exception.js
...
...
@@ -11,7 +11,6 @@ const catchError = async (ctx, next) => {
await
next
();
}
catch
(
error
)
{
if
(
error
.
errorCode
)
{
ctx
.
body
=
{
msg
:
error
.
msg
,
errorCode
:
error
.
errorCode
,
...
...
@@ -19,7 +18,7 @@ const catchError = async (ctx, next) => {
}
}
else
{
//对于未知的异常,采用特别处理
console
.
log
(
error
.
originalError
);
console
.
log
(
'
全局捕获:
'
,
error
.
originalError
);
if
(
error
.
originalError
==
'
JsonWebTokenError: invalid token
'
)
{
error
.
errorCode
=
401
;
ctx
.
body
=
{
...
...
src/model/type/index.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-08-31 14:12:44
* @LastEditTime: 2021-0
8-31 14:12:45
* @LastEditTime: 2021-0
9-03 16:50:24
* @LastEditors: Please set LastEditors
* @Description: sequelize数据类型
* @FilePath: \koa2-test-api\src\model\type\index.js
...
...
@@ -11,7 +11,7 @@ const {
Sequelize
}
=
require
(
"
sequelize
"
);
// 导入内置数据类型
module
.
exports
=
{
STRING
:
DataTypes
.
STRING
,
STRING
:
DataTypes
.
STRING
,
//STRING
TEXT
:
DataTypes
.
TEXT
,
// TEXT
BOOLEAN
:
DataTypes
.
BOOLEAN
,
INTEGER
:
DataTypes
.
INTEGER
,
// INTEGER
...
...
src/routes/api/users.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-08-30 10:58:19
* @LastEditTime: 2021-09-03 16:
36:32
* @LastEditTime: 2021-09-03 16:
50:51
* @LastEditors: Please set LastEditors
* @Description: 用户接口
* @FilePath: \koa2-test-api\src\routes\api\users.js
...
...
@@ -26,15 +26,11 @@ const {
}
=
require
(
'
../../utils/crypto.js
'
);
router
.
prefix
(
'
/api/users
'
)
router
.
post
(
'
/login
'
,
async
(
ctx
,
next
)
=>
{
const
{
user_name
,
password
}
=
ctx
.
request
.
body
;
const
result
=
await
login
({
user_name
,
password
:
enCrypto
(
password
)
...
...
@@ -46,10 +42,8 @@ router.post('/login', async (ctx, next) => {
*
**/
let
token
=
generateToken
(
result
.
id
,
result
.
scope
,
result
.
user_name
)
return
ctx
.
body
=
new
global
.
errs
.
Success
(
token
);
}
else
{
return
ctx
.
body
=
new
global
.
errs
.
NotFound
(
result
.
msg
);
}
...
...
@@ -92,8 +86,6 @@ router.post('/setting', new auth().m, async (ctx, next) => {
user_name
,
password
:
enCrypto
(
password
)
});
console
.
log
(
'
当前用户
'
,
newUser
);
if
(
newUser
.
errorCode
==
200
)
{
return
ctx
.
body
=
new
global
.
errs
.
Success
(
newUser
);
...
...
src/service/user.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-08-31 15:01:10
* @LastEditTime: 2021-09-03 16:
06:53
* @LastEditTime: 2021-09-03 16:
53:06
* @LastEditors: Please set LastEditors
* @Description: 查询用户
* @FilePath: \koa2-test-api\src\service\user.js
...
...
@@ -13,7 +13,11 @@ const {
const
{
User
,
}
=
require
(
'
../model/User.js
'
);
/**
*
* @param {Object} param0 user_name:用户名,password:密码
* @returns
*/
async
function
findUser
({
user_name
,
password
...
...
@@ -50,10 +54,12 @@ async function findUser({
}
else
{
return
result
;
}
}
/**
* 创建用户
* @param {object} param0 user_name用户名,password:密码,scope:区域
* @returns
*/
async
function
createUser
({
user_name
,
password
,
...
...
src/utils/crypto.js
浏览文件 @
83bea10b
/*
* @Author: 尹鹏孝
* @Date: 2021-09-03 15:02:26
* @LastEditTime: 2021-09-03 1
5:43:0
3
* @LastEditTime: 2021-09-03 1
6:53:3
3
* @LastEditors: Please set LastEditors
* @Description: 密码加密
* @FilePath: \koa2-test-api\src\utils\cropto.js
...
...
@@ -10,12 +10,20 @@
const
CryptoJS
=
require
(
'
crypto-js
'
);
const
config
=
require
(
"
../config/config.js
"
)
console
.
log
(
config
);
/**
* CryptoJS的MD5加密
* @param {string} key MD5加密
* @returns
*/
function
enCrypto
(
key
)
{
const
result
=
CryptoJS
.
MD5
(
key
+
config
.
cryptoSecretKey
).
toString
();
return
result
;
}
/**
* CryptoJS的MD5解密
* @param {string} cipherText 加密后的值
* @returns
*/
function
deCrypto
(
cipherText
)
{
var
bytes
=
CryptoJS
.
MD5
.
decrypt
(
cipherText
,
config
.
cryptoSecretKey
);
var
originalText
=
bytes
.
toString
(
CryptoJS
.
enc
.
Utf8
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录