代码仓库

创建项目

1
2
# 选项全部默认就好了
pnpm dlx create-next-app@14 next-quick-start

数据库 db

我们使用prisma创建数据库

1
2
3
4
5
6
7
8
9
10
11
12
pnpm i -D prisma@5
# 初始化, 生成.prisma数据库定义文件
pnpm dlx prisma@5 init
pnpm i @prisma/client@5
# 生成type
pnpm dlx prisma@5 generate
# 创建数据库表
pnpm dlx prisma@5 db push
# (如果上面的命令遇到超时问题)设置prisma镜像
$Env:PRISMA_ENGINES_MIRROR ='https://registry.npmmirror.com/-/binary/prisma'
# 查看数据库的命令
pnpm dlx prisma studio

先配置一下等下身份验证需要的数据表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// web/prisma/schema.prisma
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
// url = "file:./dev.db"
}

generator client {
provider = "prisma-client-js"
}

model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
// 一般不推荐存储密码
password String?
accounts Account[]
// sessions Session[]
// Optional for WebAuthn support
// Authenticator Authenticator[]

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Account {
id String @id @default(cuid())
userId String
type String
provider String
providerAccountId String
refresh_token String?
access_token String?
expires_at Int?
token_type String?
scope String?
id_token String?
session_state String?

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

user User @relation(fields: [userId], references: [id], onDelete: Cascade)

@@unique([provider, providerAccountId])
}

// model Session {
// id String @id @default(cuid())
// sessionToken String @unique
// userId String
// expires DateTime
// user User @relation(fields: [userId], references: [id], onDelete: Cascade)
//
// createdAt DateTime @default(now())
// updatedAt DateTime @updatedAt
// }

// model VerificationToken {
// identifier String
// token String
// expires DateTime
//
// @@unique([identifier, token])
// }

// Optional for WebAuthn support
// model Authenticator {
// credentialID String @unique
// userId String
// providerAccountId String
// credentialPublicKey String
// counter Int
// credentialDeviceType String
// credentialBackedUp Boolean
// transports String?
//
// user User @relation(fields: [userId], references: [id], onDelete: Cascade)
//
// @@id([userId, credentialID])
// }

身份验证 auth

使用next-auth进行身份验证

1
2
3
4
# v5 beta
pnpm i next-auth@beta
# next-auth的prisma适配器
pnpm i @auth/prisma-adapter

本站总访问量