我是 Nest.js 的新手,我有一个问题。我有一个这样的角色守卫
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Observable } from 'rxjs';
import { Reflector } from '@nestjs/core';
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private readonly reflector: Reflector) {
}
canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
const roles = this.reflector.get<string[]>('roles', context.getHandler());
if (!roles) {
return true;
}
const request = context.switchToHttp().getRequest();
const user = request.user;
return user.role.some(role => !!roles.find(item => item === role));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想像这样使用这个守卫作为全局守卫
app.useGlobalGuards(new RolesGuard())
Run Code Online (Sandbox Code Playgroud)
但它说我需要将参数(反射器)传递给警卫,正如我在构造函数中提到的那样,现在可以像这样初始化反射器吗?
const reflector:Reflector = …Run Code Online (Sandbox Code Playgroud) 假设我有一个结构
struct Vector3 {
float x;
float y;
float z;
};
Run Code Online (Sandbox Code Playgroud)
注意sizeof(Vector3)必须保持不变。
编辑:我对没有二传手的解决方案感兴趣。
不要让我们创建该 struct 的实例Vector3 pos。我如何能实现我的结构,所以我可以有这样的事情pos.xy = 10 // updates x and y还是pos.yz = 20 // updates y and z和pos.xz = 30 // updates x and z?
data class AuthDataModel @Inject constructor(
var username: String = "",
var password: String = "",
var mobileData: String = "
Run Code Online (Sandbox Code Playgroud)
我正在尝试将身份验证数据模型注入kotlin中的身份验证视图模型,但无法与message一起编译(“类型只能包含一个@Inject构造函数)
我有这样的 anum:
export enum UserRole {
USER,
ADMIN,
BLOGGER
}
Run Code Online (Sandbox Code Playgroud)
并像这样 create.user.dto
import { IsEmail, IsEnum, IsNotEmpty, IsOptional } from 'class-validator';
import { UserRole } from './user.entity';
export class CreateUserDto {
@IsEmail()
email: string;
@IsNotEmpty()
firstName: string;
@IsNotEmpty()
lastName: string;
@IsOptional()
username: string;
@IsOptional()
@IsEnum(UserRole)
role: UserRole;
@IsNotEmpty()
password: string;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我只发布角色大写 ('ADMIN','USER') 或 'BLOGGER',角色验证不会失败。
如何使类验证器不区分大小写?我的意思是,也验证“admin”“aDmIn”为真。
考虑我有结构 RGB 和 ARGB。
template<typename T>
struct RGB {
T r,g,b;
};
template<typename T>
struct ARGB {
T a,r,g,b;
}
Run Code Online (Sandbox Code Playgroud)
现在我通过以下来定义它们。
using RGB_888 = RGB<unsigned char>;
using RGB_Float = RGB<float>;
using ARGB_8888 = ARGB<unsigned char>;
using ARGB_Float = ARGB<float>;
Run Code Online (Sandbox Code Playgroud)
在某些时候,我想从一个 rgb 转换为另一个,从 rgb 转换为 argb。所以我做以下事情。
template<typename Source, typename Dest>
void convert(const Source& source, Dest& dest)
{
}
Run Code Online (Sandbox Code Playgroud)
它会像这样工作。
RGB_888 rgb888{123,22,311};
RGB_Float rgbFloat;
convert<RGB_888,RGB_Float>(rgb888,rgbFloat);
RGB_888 rgb888(123,22,132};
ARGB_Float argbFloat;
convert<RGB_888,ARGB_Float>(rgb888,argbFloat);
Run Code Online (Sandbox Code Playgroud)
问题是我无法检测typename Source和typename Dest是否来自相同的颜色模型,我需要正确转换。换句话说,如果一些typename …