55 lines
1.7 KiB
Markdown
55 lines
1.7 KiB
Markdown
up:: [[Boilerplate Code]]
|
|
X:: [[JavaScript]]
|
|
tags:: #boilerplate
|
|
|
|
# JWT Class Boilerplate
|
|
|
|
## Here is a simple example of how you might use JSON Web Tokens (JWTs) for user management in a TypeScript project:
|
|
|
|
```tsx
|
|
import jwt from 'jsonwebtoken';
|
|
|
|
class User {
|
|
private id: number;
|
|
private username: string;
|
|
private password: string;
|
|
|
|
constructor(id: number, username: string, password: string) {
|
|
this.id = id;
|
|
this.username = username;
|
|
this.password = password;
|
|
}
|
|
|
|
public getId(): number {
|
|
return this.id;
|
|
}
|
|
|
|
public getUsername(): string {
|
|
return this.username;
|
|
}
|
|
|
|
public setUsername(username: string): void {
|
|
this.username = username;
|
|
}
|
|
|
|
public getPassword(): string {
|
|
return this.password;
|
|
}
|
|
|
|
public setPassword(password: string): void {
|
|
this.password = password;
|
|
}
|
|
|
|
public generateJWT(): string {
|
|
const tokenData = {
|
|
id: this.id,
|
|
username: this.username,
|
|
};
|
|
|
|
return jwt.sign(tokenData, process.env.JWT_SECRET);
|
|
}
|
|
}
|
|
```
|
|
|
|
In this example, the **`User`** class has three private properties: **`id`**, **`username`**, and **`password`**. The class has a constructor that accepts values for **`id`**, **`username`**, and **`password`**, and assigns them to the respective properties. The class also has methods for accessing and modifying these properties, as well as a method for generating a JSON Web Token (JWT) for the user. The **`generateJWT`** method uses the **`jsonwebtoken`** library to sign a JSON object containing the user's **`id`** and **`username`** properties, using a secret key stored in the **`JWT_SECRET`** environment variable. This JWT can then be sent to the client and used to authenticate and authorize the user in subsequent requests.
|