nestjs 用户注册 登录认证模块 代码
时间: 2023-07-25 13:35:15 浏览: 149
好的,下面是一个简单的nestjs用户注册、登录和认证的代码示例:
```typescript
import { Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { compareSync } from 'bcrypt';
import { CreateUserDto } from './dto/create-user.dto';
import { UsersService } from './users.service';
@Injectable()
export class AuthService {
constructor(
private readonly usersService: UsersService,
private readonly jwtService: JwtService,
) {}
async validateUser(email: string, password: string): Promise<any> {
const user = await this.usersService.findByEmail(email);
if (user && compareSync(password, user.password)) {
const { password, ...result } = user;
return result;
}
return null;
}
async register(createUserDto: CreateUserDto) {
const user = await this.usersService.create(createUserDto);
const payload = { email: user.email, sub: user.id };
return {
access_token: this.jwtService.sign(payload),
};
}
async login(user: any) {
const payload = { email: user.email, sub: user.id };
return {
access_token: this.jwtService.sign(payload),
};
}
async verifyToken(token: string) {
try {
const decoded = this.jwtService.verify(token);
const user = await this.usersService.findById(decoded.sub);
if (!user) {
throw new Error('User not found');
}
return user;
} catch (error) {
throw new Error('Invalid token');
}
}
}
```
这个代码示例中包含了一个`AuthService`类,它包含了用户注册、登录和认证的相关方法。其中:
- `validateUser`方法用于验证用户的登录信息是否正确;
- `register`方法用于注册新用户,创建用户成功后会返回一个包含JWT Token的对象;
- `login`方法用于用户登录,成功登录后也会返回一个包含JWT Token的对象;
- `verifyToken`方法用于验证JWT Token是否有效,如果有效会返回对应的用户信息。
另外,这个代码示例中还包含了一个`UsersService`类,用于用户相关的数据操作。这里就不再赘述了。
希望这个代码示例能够对您有所帮助!
阅读全文