Token ကို MongoDB မှာ store လုပ်ဖို့အတွက် ပြည့်စုံတဲ့ code ကို Node.js နဲ့ MongoDB ကိုအသုံးပြုပြီး ရေးပေးပါမယ်။
ပထမဆုံး လိုအပ်တဲ့ package တွေကို install လုပ်ရပါမယ်:
npm install express mongoose jsonwebtoken bcrypt dotenv
ပြီးရင် အောက်ပါ code ကို အသုံးပြုနိုင်ပါတယ်:
const express = require('express');
const mongoose = require('mongoose');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
require('dotenv').config();
const app = express();
app.use(express.json());
// MongoDB connection
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true });
// User model
const UserSchema = new mongoose.Schema({
username: String,
password: String,
tokens: [{
token: {
type: String,
required: true
}
}]
});
UserSchema.methods.generateAuthToken = async function() {
const user = this;
const token = jwt.sign({ _id: user._id.toString() }, process.env.JWT_SECRET);
user.tokens = user.tokens.concat({ token });
await user.save();
return token;
};
const User = mongoose.model('User', UserSchema);
// Register route
app.post('/register', async (req, res) => {
try {
const { username, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 8);
const user = new User({ username, password: hashedPassword });
await user.save();
const token = await user.generateAuthToken();
res.status(201).send({ user, token });
} catch (error) {
res.status(400).send(error);
}
});
// Login route
app.post('/login', async (req, res) => {
try {
const { username, password } = req.body;
const user = await User.findOne({ username });
if (!user) {
throw new Error('Unable to login');
}
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
throw new Error('Unable to login');
}
const token = await user.generateAuthToken();
res.send({ user, token });
} catch (error) {
res.status(400).send(error);
}
});
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Server running on port ${port}`));
ဒီ code မှာ:
- User model မှာ tokens array ကို ထည့်ထားပါတယ်။
- generateAuthToken method က JWT token ကို generate လုပ်ပြီး user document ထဲမှာ store လုပ်ပါတယ်။
- Register နဲ့ login route တွေမှာ token ကို generate လုပ်ပြီး response ပြန်ပေးပါတယ်။
.env file မှာ အောက်ပါ configuration တွေကို ထည့်ပေးရပါမယ်:
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
PORT=3000
ဒီ code က အခြေခံ token storage နဲ့ authentication process ကို ပြထားတာဖြစ်ပါတယ်။ လက်တွေ့သုံးမယ်ဆိုရင် error handling နဲ့ security features တွေ ထပ်ထည့်သင့်ပါတယ်။