# 1、执行时机
myDemo.modules.ts 文件
import { Module } from "@nestjs/common";
import { MyDemoController } from "./myDemo.controller";
import { MyDemoService } from "./myDemo.service";
@Module({
providers: [MyDemoService], //这里引入了 MyDemoService
controllers: [MyDemoController], //这里引入了 MyDemoController
})
export class MyDemoModule {}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
只有在 modules.ts 文件中引入了 Service 和 Controller ,才会执行实例化对应的 Service 和 Controller 中的 class 类,比如 MyDemoService 文件中,,才会执行初始化22222和初始化MyDemoService
import { Injectable, Inject } from "@nestjs/common";
console.log("初始化22222");
@Injectable()
export class MyDemoService {
constructor() {
console.log("初始化MyDemoService");
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
2、验证登录 NestJs 安全验证
# 配置策略
在 vanilla Passport 中,您可以通过提供以下两项配置策略:
组特定于该策略的选项。例如,在 JWT 策略中,您可以提供一个秘令来对令牌进行签名。
“验证回调”,在这里您可以告诉 Passport 如何与您的用户存储交互(在这里您可以管理用户帐户)。在这里,验证用户是否存在(或创建一个新用户),以及他们的凭据是否有效。Passport 库期望这个回调在验证成功时返回完整的用户消息,在验证失败时返回 null(失败定义为用户没有找到,或者在使用 Passport-local 的情况下,密码不匹配)。
# 命名策略
在实现策略时,可以通过向 PassportStrategy 函数传递第二个参数来为其提供名称。如果你不这样做,每个策略将有一个默认的名称(例如,”jwt”的 jwt 策略 ):
export class JwtStrategy extends PassportStrategy(Strategy, 'myjwt')
然后,通过一个像 @AuthGuard('myjwt') 这样的装饰器来引用它。