当前位置: 首页 > news >正文

网站建设个人工作室自己建站的网站

网站建设个人工作室,自己建站的网站,网站设计的目的是什么,网站备案号添加超链接使用 Nest.js 开发项目时#xff0c;处理身份验证和授权是常见的需求#xff0c;可以采用以下架构和实现方式。 架构 用户认证模块 (Auth Module): 服务 (Service): 处理用户登录逻辑#xff0c;生成 JWT#xff08;JSON Web Token#xff09;#xff0c;以及验证 token…使用 Nest.js 开发项目时处理身份验证和授权是常见的需求可以采用以下架构和实现方式。 架构 用户认证模块 (Auth Module): 服务 (Service): 处理用户登录逻辑生成 JWTJSON Web Token以及验证 token。控制器 (Controller): 提供登录接口处理来自客户端的请求。中间件/守卫 (Guards): 在需要保护的路由中验证请求头中的 token决定是否放行。 JWT 模块: 利用 Nest.js 提供的 JWT 模块来简化 token 的生成与验证。 数据库模块: 用于存储和查询用户信息可能使用 TypeORM 或 Mongoose 等库来操作数据库。 实现步骤 1. 安装所需的依赖 在项目中安装以下依赖 npm install nestjs/jwt nestjs/passport passport passport-jwt bcrypt2. 创建 Auth Module 生成 Auth 模块 nest g module auth nest g controller auth nest g service auth3. 实现用户登录逻辑 在 auth.service.ts 中实现用户登录和 token 生成逻辑 import { Injectable } from nestjs/common; import { JwtService } from nestjs/jwt; import { UserService } from ../user/user.service; // 假设你有一个用户服务 import { User } from ../user/user.entity; // 假设你有一个用户实体 import * as bcrypt from bcrypt;Injectable() export class AuthService {constructor(private userService: UserService,private jwtService: JwtService,) {}async login(username: string, password: string): Promisestring {const user: User await this.userService.findByUsername(username);if (user await bcrypt.compare(password, user.password)) {const payload { username: user.username, sub: user.id };return this.jwtService.sign(payload);}throw new Error(Invalid credentials);} }4. 创建登录接口 在 auth.controller.ts 中添加登录接口 import { Controller, Post, Body } from nestjs/common; import { AuthService } from ./auth.service;Controller(auth) export class AuthController {constructor(private authService: AuthService) {}Post(login)async login(Body() loginDto: { username: string; password: string }) {return this.authService.login(loginDto.username, loginDto.password);} }5. 设置 JWT 模块 在 auth.module.ts 中配置 JWT 模块 import { Module } from nestjs/common; import { JwtModule } from nestjs/jwt; import { AuthController } from ./auth.controller; import { AuthService } from ./auth.service; import { UserService } from ../user/user.service; // 引入用户服务Module({imports: [JwtModule.register({secret: your_secret_key, // 应该放在环境变量中signOptions: { expiresIn: 60s }, // token 过期时间}),],controllers: [AuthController],providers: [AuthService, UserService], }) export class AuthModule {}6. 创建 JWT 校验守卫 创建一个守卫来验证 token在 auth.guard.ts 中实现 import { Injectable, ExecutionContext, UnauthorizedException } from nestjs/common; import { AuthGuard } from nestjs/passport;Injectable() export class JwtAuthGuard extends AuthGuard(jwt) {handleRequest(err, user) {if (err || !user) {throw new UnauthorizedException();}return user;} }7. 设置 JWT 策略 在 auth.strategy.ts 中定义 JWT 策略 import { Injectable } from nestjs/common; import { PassportStrategy } from nestjs/passport; import { Strategy, ExtractJwt } from passport-jwt; import { UserService } from ../user/user.service; // 引入用户服务 import { JwtPayload } from ./jwt.payload; // 定义 payload 接口Injectable() export class JwtStrategy extends PassportStrategy(Strategy) {constructor(private userService: UserService) {super({jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),ignoreExpiration: false,secretOrKey: your_secret_key, // 应该放在环境变量中});}async validate(payload: JwtPayload) {return this.userService.findById(payload.sub); // 根据 payload.sub 查找用户} }8. 保护路由 在需要保护的控制器中使用守卫 import { Controller, Get, UseGuards } from nestjs/common; import { JwtAuthGuard } from ./auth.guard;Controller(protected) export class ProtectedController {UseGuards(JwtAuthGuard)Get()getProtectedResource() {return This is a protected resource;} }总结 通过以上步骤可以实现一个简单的用户登录和 JWT 身份验证系统。用户登录时会生成 token而在需要保护的接口中通过中间件校验 token 的有效性以决定是否放行请求。建议把 secret key 存放在环境变量中以增强安全性。
http://www.hkea.cn/news/14452067/

相关文章:

  • 网站建设 接单动画设计素材
  • 做物流网站注意什么国家企业信息系统官方
  • 建设网站五个步骤青岛网站建设方案外包
  • 东莞建设企业网站公司抖音代运营合作
  • 自己的网站怎么编辑wordpress 外观菜单
  • 南充企业网站建设网站建设报价请示
  • 网站建设收费流程全国建设部官方网站
  • 域名注册新seo排名点击软件
  • 可以做外国网站文章嘉兴网站建设品牌升级
  • 广州网站推广运营网站备案收费
  • 响应式网站新闻部分怎么做襄阳百度开户
  • 深圳网站 商城制作软件开发流程流程图
  • 做公众号app,网站,app网站建设公司哪些主要哪些
  • 成都专业网站营销wordpress 注册会员
  • 网站的功能板块广告公司企业简介怎么写
  • 网站地图做关键词排名设计师门户网站程序
  • 如何做淘客发单网站做网站哪家服务器好
  • 温岭市建设工程质量安全网站如何让自己做的网页有网站
  • 湿地公园网站建设一个免费的网站
  • 湖南省网站太原论坛
  • 论坛网站免费建设模板光之翼可以做网站吗
  • 超能力联盟网站养一个空壳公司的好处
  • 社交网站推广怎么做网建什么意思
  • 固定ip做网站和域名区别网站设计确认
  • 动易 网站顶部导航 sitefactory免费设计签名的软件
  • 网站设计公司南京内乡微网站开发
  • 网站前台的网址快速网页制作工具
  • 关于申请网站建设WordPress主题使用域名加密
  • app推广平台网站凡科建站弊端
  • 企业查询网站企查查营销型网站代理