目前,我尝试学习nestjs,因此我遵循官方(cat-)教程构建了一个基本的用户身份验证系统。
当您访问API以更改用户名或密码时,请求应检查用户是否为有效用户(从数据库读取用户)。为了存储用户,我已经有了mongodb连接。
我目前正在琢磨如何在警卫中获得数据库模块/访问权限。
防护正在工作,但只返回true,我尝试注入数据库模块,但没有成功。
@Injectable()
export class AuthGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest();
return this.validateRequest(request);
}
validateRequest(execContext: ExecutionContext): boolean | Promise<boolean> | Observable<boolean>{
const request = execContext.switchToHttp().getRequest();
const user = request.user;
return true;
}
}
使用findOne方法扩展UserService类并将其注入到服务中是正确的方法吗?
@Injectable()
export class UserService{
constructor(@Inject('USER_MODEL') private readonly userModel: Model<User>){}
async create(createUserDto: CreateUserDto): Promise<User>{
const createdUser = new this.userModel(createUserDto);
return await createdUser.save();
}
async update(updateUserDto: UpdateUserDto): Promise<User>{
const updateUser = new this.userModel(updateUserDto);
return await this.userModel.updateOne({loginname: updateUser.loginname}, this.getUpdateQueryFromUserModel(updateUser));
}
async delete(deleteUserDto: DeleteUserDto): Promise<User>{
const deleteUser = new this.userModel(deleteUserDto);
return await this.userModel.deleteAll({loginname:deleteUser.loginname}).exec();
}
async findAll(): Promise<User[]> {
return await this.userModel.find().exec();
}
getUpdateQueryFromUserModel(userModel: Model<User>): Object {
let query = {};
if(userModel.dispname !== undefined && userModel.dispname !== null){
query["dispname"] = userModel.dispname;
}
if(userModel.pw !== undefined && userModel.pw !== null){
query["pw"] = hash.sha256().update(userModel.pw).digest('hex');
}
return query;
}
}
你能告诉我正确的方法是什么吗?提前感谢!
我找到了一个数据库访问的解决方案,您可以直接注入它(以前尝试过,但由于另一个问题而失败)。
@Injectable()
export class AuthGuard implements CanActivate {
constructor(@Inject('UserService')private readonly userService:UserService){}
canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest();
return this.validateRequest(request);
}
async validateRequest(execContext: ExecutionContext): Promise<boolean>{
const request = execContext.switchToHttp().getRequest();
const user = request.user;
console.log(await this.userService.findAll());
return new Promise<boolean>((resolve, reject) => {
return true;
});
}
}
我的代码现在看起来像这样,在构造函数中注入了服务,但它仍然不能完全工作,因为当我试图运行ontext.switchToHttp(). getRequest()
行时,我得到一个错误开关ToHttp不是一个函数,有人能帮忙吗?
帕斯卡你好
问题内容: 我有一个Iron-router路由,我想通过它通过HTTP POST请求接收经纬度数据。 这是我的尝试: 但是查询服务器: 返回。 也许不包含发布数据?我试图检查对象和请求,但找不到。 问题答案: Iron- router中的连接框架使用bodyParser中间件来解析主体中发送的数据。bodyParser使该数据在对象中可用。 以下对我有用: 这给了我: 另请参见此处:http :
问题内容: 我有一个要求,即只能从本地主机访问mysql数据库。我必须实现一个可以访问数据库的servlet,以允许该系统中的其他服务器访问数据(servlet可以充当代理)。但是,此系统由一个远程服务器组成,该服务器下载执行以下语句的大部分数据: 有人可以建议我如何编写一个以有效方式流式传输此类数据的servlet吗(我是数据库新手)? 问题答案: 首先,我不建议为此使用servlet。有关正确
在Spring Boot项目中,我试图从我的IDE中查看内存中的表。 如何从Intellij IDEA访问内存中的h2数据库。 这是我的应用程序的一个片段。yml:
我有一个docker compose文件,看起来像: 运行之后,我看到所有的服务都启动了,并且看起来工作良好。我的服务使用以下sqlalchemy连接字符串连接到postgres: 编辑:这是在接受的解决方案中的一个评论中回答的,但我认为值得在这里指出:我已经在本地运行postgres,这引起了各种混乱。 删除我的本地postgres实例并更新我的hosts文件,就像接受的答案中提到的那样,一切都
我正在构建一个android应用程序,使用谷歌app engine后端。 我在谷歌云存储的一个桶里有一些音频文件(手动上传),我想从后端访问它们(我想获得它们的URL并将它们发送到我的应用程序,这样它就可以播放音频文件)。 谢谢:)
我正在向用户发送动态通知。因此,我正在处理Firebase云函数。这里是我的问题:我如何访问云功能端的数据库? 这是我的代码: 正如你们所看到的,首先,我想从nofications集合中获取电子邮件,然后使用该电子邮件,我想搜索正在使用该电子邮件的用户,然后,我想获取用户deviceToken。 我尝试了很多关于语法的东西,但没有得到任何结果:/ 同样,我也犯了一些错误: 在这里您可以看到错误: