From ba5e92e2be20b9539df71110abe66e2a7e3f132a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=87=E8=B6=A3=E4=BF=9D=E7=BD=97?= Date: Wed, 25 May 2022 23:32:17 +0800 Subject: [PATCH] Feat: Check Pwd with MD5 + Salt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MD5 加盐方式验证密码 --- package.json | 2 ++ prisma/schema.prisma | 6 ++++++ src/server/api/acgm.ts | 3 ++- src/server/api/auth/login.ts | 13 +++++++++---- src/server/configuration.ts | 3 ++- yarn.lock | 29 +++++++++++++++++++++++++++++ 6 files changed, 50 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ceb28d9..10827c0 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dotenv": "^16.0.0", "isomorphic-unfetch": "^3.1.0", "lodash": "^4.17.21", + "md5": "^2.3.0", "passport": "^0.5.2", "passport-jwt": "^4.0.0", "prismjs": "^1.27.0", @@ -31,6 +32,7 @@ "@midwayjs/mock": "^3.3.0", "@types/ioredis": "^4.28.10", "@types/lodash": "^4.14.181", + "@types/md5": "^2.3.2", "@types/passport-jwt": "^3.0.6", "@types/prismjs": "^1.26.0", "@types/react": "^17.0.44", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c3a9a2c..1a68b3a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -11,11 +11,17 @@ model User { id String @id @default(cuid()) name String @unique email String @unique + role UserRole @default(USER) password String created_at DateTime @default(now()) updated_at DateTime? } +enum UserRole { + ADMIN + USER +} + model ACGM { id Int @id @default(autoincrement()) title String? diff --git a/src/server/api/acgm.ts b/src/server/api/acgm.ts index 3b02a48..6da7412 100644 --- a/src/server/api/acgm.ts +++ b/src/server/api/acgm.ts @@ -1,4 +1,5 @@ import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks"; +import { Context } from "@midwayjs/koa"; import { RedisService } from "@midwayjs/redis"; import { prisma } from "../utils/prisma"; @@ -8,7 +9,7 @@ export default Api( Get(), Query<{ play?: string }>(), async () => { - const ctx = useContext(); + const ctx = useContext(); const client = await useInject(RedisService); // 设置 Header diff --git a/src/server/api/auth/login.ts b/src/server/api/auth/login.ts index 40eb63d..be1a6da 100644 --- a/src/server/api/auth/login.ts +++ b/src/server/api/auth/login.ts @@ -1,19 +1,24 @@ -import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks"; +import { Api, Get, Query, useContext, useInject, useConfig } from "@midwayjs/hooks"; import { JwtService } from "@midwayjs/jwt"; +import { Context } from "@midwayjs/koa"; import { prisma } from "../../utils/prisma"; +import md5 from "md5"; export default Api( Get(), Query<{ username: string, password: string }>(), async () => { - const ctx = useContext(); + const ctx = useContext(); + const config = useConfig(); const jwt = await useInject(JwtService); + const pwd = md5(config.pwdSalt + ctx.query.password); + const user = await prisma.user.findFirst({ where: { - name: ctx.query.username, - password: ctx.query.password + name: ctx.query.username as string, + password: pwd } }); diff --git a/src/server/configuration.ts b/src/server/configuration.ts index 5c8e036..e2afb78 100644 --- a/src/server/configuration.ts +++ b/src/server/configuration.ts @@ -30,7 +30,8 @@ export default createConfiguration({ }, passport: { session: false - } + }, + pwdSalt: env.parsed ?. PAUL_PWD_SALT } }], }); diff --git a/yarn.lock b/yarn.lock index 6c5fd1d..371d618 100644 --- a/yarn.lock +++ b/yarn.lock @@ -900,6 +900,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d" integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag== +"@types/md5@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.3.2.tgz#529bb3f8a7e9e9f621094eb76a443f585d882528" + integrity sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og== + "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -1240,6 +1245,11 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -1417,6 +1427,11 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + csstype@^3.0.2: version "3.0.11" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" @@ -2025,6 +2040,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-class@^0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/is-class/-/is-class-0.0.9.tgz#3024c17b1cf8f6bdc1f3eca1bae507ea992b6d93" @@ -2330,6 +2350,15 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"