鉴权
原创...小于 1 分钟
新建权限守卫
nest g gu ./guard/authorization
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private readonly allowedRoles: string[]) { }
canActivate(context: ExecutionContext): boolean {
const request = context.switchToHttp().getRequest();
const user = request.user;
console.log(this.allowedRoles)
if (user && this.allowedRoles.includes(user.role)) {
return true;
}
return false;
}
}
模型
import { Entity, Column, PrimaryGeneratedColumn, BeforeInsert } from 'typeorm';
import * as bcrypt from 'bcrypt';
@Entity()
export class App {
@PrimaryGeneratedColumn()
id: number;
@Column()
userName: string;
@Column()
passWord: string;
@BeforeInsert()
async hashPassword() {
this.passWord = await bcrypt.hash(this.passWord, 10);
}
@Column({ default: true })
isActive: boolean;
@Column({ default: "user" })
role: string;
}
使用
import { Controller, Get, UseGuards } from '@nestjs/common';
import { AppService } from './app.service';
import { AuthGuard } from 'src/guard/authentication/authentication.guard';
import { RolesGuard } from "src/guard/authorization/authorization.guard"
@Controller()
export class AppController {
constructor(private readonly appService: AppService) { }
@UseGuards(AuthGuard, new RolesGuard(['admin']))
@Get()
isAdmin() {
return this.appService.isAdmin();
}
}
Powered by Waline v2.15.7