Feat: Check Pwd with MD5 + Salt

MD5 加盐方式验证密码
This commit is contained in:
奇趣保罗 2022-05-25 23:32:17 +08:00
parent 02e7d3ad5a
commit ba5e92e2be
6 changed files with 50 additions and 6 deletions

View File

@ -20,6 +20,7 @@
"dotenv": "^16.0.0", "dotenv": "^16.0.0",
"isomorphic-unfetch": "^3.1.0", "isomorphic-unfetch": "^3.1.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"md5": "^2.3.0",
"passport": "^0.5.2", "passport": "^0.5.2",
"passport-jwt": "^4.0.0", "passport-jwt": "^4.0.0",
"prismjs": "^1.27.0", "prismjs": "^1.27.0",
@ -31,6 +32,7 @@
"@midwayjs/mock": "^3.3.0", "@midwayjs/mock": "^3.3.0",
"@types/ioredis": "^4.28.10", "@types/ioredis": "^4.28.10",
"@types/lodash": "^4.14.181", "@types/lodash": "^4.14.181",
"@types/md5": "^2.3.2",
"@types/passport-jwt": "^3.0.6", "@types/passport-jwt": "^3.0.6",
"@types/prismjs": "^1.26.0", "@types/prismjs": "^1.26.0",
"@types/react": "^17.0.44", "@types/react": "^17.0.44",

View File

@ -11,11 +11,17 @@ model User {
id String @id @default(cuid()) id String @id @default(cuid())
name String @unique name String @unique
email String @unique email String @unique
role UserRole @default(USER)
password String password String
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime? updated_at DateTime?
} }
enum UserRole {
ADMIN
USER
}
model ACGM { model ACGM {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
title String? title String?

View File

@ -1,4 +1,5 @@
import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks"; import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { Context } from "@midwayjs/koa";
import { RedisService } from "@midwayjs/redis"; import { RedisService } from "@midwayjs/redis";
import { prisma } from "../utils/prisma"; import { prisma } from "../utils/prisma";
@ -8,7 +9,7 @@ export default Api(
Get(), Get(),
Query<{ play?: string }>(), Query<{ play?: string }>(),
async () => { async () => {
const ctx = useContext(); const ctx = useContext<Context>();
const client = await useInject(RedisService); const client = await useInject(RedisService);
// 设置 Header // 设置 Header

View File

@ -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 { JwtService } from "@midwayjs/jwt";
import { Context } from "@midwayjs/koa";
import { prisma } from "../../utils/prisma"; import { prisma } from "../../utils/prisma";
import md5 from "md5";
export default Api( export default Api(
Get(), Get(),
Query<{ username: string, password: string }>(), Query<{ username: string, password: string }>(),
async () => { async () => {
const ctx = useContext(); const ctx = useContext<Context>();
const config = useConfig();
const jwt = await useInject(JwtService); const jwt = await useInject(JwtService);
const pwd = md5(config.pwdSalt + ctx.query.password);
const user = await prisma.user.findFirst({ const user = await prisma.user.findFirst({
where: { where: {
name: ctx.query.username, name: ctx.query.username as string,
password: ctx.query.password password: pwd
} }
}); });

View File

@ -30,7 +30,8 @@ export default createConfiguration({
}, },
passport: { passport: {
session: false session: false
} },
pwdSalt: env.parsed ?. PAUL_PWD_SALT
} }
}], }],
}); });

View File

@ -900,6 +900,11 @@
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d"
integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag== 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": "@types/mime@^1":
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 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" escape-string-regexp "^1.0.5"
supports-color "^5.3.0" 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: chokidar@^3.4.2, chokidar@^3.5.3:
version "3.5.3" version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 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" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 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: csstype@^3.0.2:
version "3.0.11" version "3.0.11"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
@ -2025,6 +2040,11 @@ is-binary-path@~2.1.0:
dependencies: dependencies:
binary-extensions "^2.0.0" 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: is-class@^0.0.9:
version "0.0.9" version "0.0.9"
resolved "https://registry.yarnpkg.com/is-class/-/is-class-0.0.9.tgz#3024c17b1cf8f6bdc1f3eca1bae507ea992b6d93" 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" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 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: media-typer@0.3.0:
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"