Web Development MeanJS এ Authentication এর ভূমিকা গাইড ও নোট

205

MeanJS স্ট্যাক, যা MongoDB, Express.js, AngularJS, এবং Node.js এর সমন্বয়ে তৈরি, আধুনিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। যেকোনো ওয়েব অ্যাপ্লিকেশনের জন্য Authentication একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীদের শনাক্ত এবং প্রমাণীকরণ করতে সহায়ক। MeanJS অ্যাপ্লিকেশনেও Authentication নিশ্চিত করতে বিভিন্ন টেকনোলজি ও পদ্ধতি ব্যবহার করা হয়। এর মাধ্যমে, আপনি শুধুমাত্র বৈধ ব্যবহারকারীদের অ্যাপ্লিকেশনে প্রবেশাধিকার দিতে পারেন এবং ডেটা নিরাপত্তা বজায় রাখতে পারেন।


Authentication কী?

Authentication হল একটি প্রক্রিয়া যার মাধ্যমে সিস্টেম নিশ্চিত করে যে ব্যবহারকারী যে দাবি করছেন, তিনি আসলেই সেই ব্যক্তি কিনা। এটি সাধারণত username এবং password এর মাধ্যমে সম্পন্ন হয়, তবে বর্তমানে multi-factor authentication (MFA), JWT (JSON Web Token), এবং OAuth এর মতো উন্নত পদ্ধতি ব্যবহারও বেড়েছে।

MeanJS এ Authentication ব্যবহৃত হয় ব্যবহারকারীদের নিরাপদভাবে অ্যাক্সেস দেওয়ার জন্য এবং তাদের তথ্য সুরক্ষিত রাখার জন্য।


MeanJS এ Authentication এর প্রক্রিয়া

MeanJS এ সাধারণত JWT (JSON Web Token) বা Session-based authentication ব্যবহৃত হয়, তবে এখানে JWT ব্যবহারের মাধ্যমে Authentication সেটআপ করার পদ্ধতি বর্ণনা করা হচ্ছে।


১. JWT (JSON Web Token) এর মাধ্যমে Authentication

JWT হল একটি ওপেন স্ট্যান্ডার্ড (RFC 7519), যা দুটি পক্ষের মধ্যে নিরাপদ তথ্য স্থানান্তর করতে ব্যবহৃত হয়। JWT মূলত একটি ইন্টারনেট প্রটোকল যা ব্যবহারকারীদের লগইন স্ট্যাটাস ট্র্যাক করার জন্য ব্যবহৃত হয়। এটি সাধারণত Access Token হিসেবে ব্যবহৃত হয়।

JWT Authentication প্রক্রিয়া:

  1. ব্যবহারকারী লগইন করে:
    • ব্যবহারকারী তার username এবং password দিয়ে লগইন করতে পারে।
    • সঠিক তথ্য প্রবেশ করলে, সার্ভার একটি JWT জেনারেট করে।
  2. JWT সঞ্চালন:
    • এই JWT টোকেনটি সার্ভার থেকে ব্যবহারকারীকে প্রেরিত হয় এবং ব্যবহারকারী সেটি তার পরবর্তী প্রতিটি রিকুয়েস্টের সাথে পাঠায়।
  3. Token ভেরিফিকেশন:
    • সার্ভার যখন ব্যবহারকারীর রিকুয়েস্ট পায়, তখন JWT টোকেনটি ভেরিফাই করে দেখবে এটি বৈধ কিনা।
    • যদি টোকেনটি বৈধ হয়, তবে ব্যবহারকারীকে অ্যাক্সেস দেওয়া হয়, অন্যথায় 401 Unauthorized রেসপন্স পাঠানো হয়।

২. MeanJS এ JWT Authentication সেটআপ

Step 1: JWT লাইব্রেরি ইনস্টল করা

প্রথমে jsonwebtoken এবং bcryptjs ইনস্টল করতে হবে, যা JWT টোকেন জেনারেট এবং পাসওয়ার্ড হ্যাশিং জন্য ব্যবহৃত হবে।

npm install jsonwebtoken bcryptjs --save

Step 2: JWT ব্যবহার করে মডেল তৈরি করা

ব্যবহারকারীর মডেল তৈরি করতে হবে যাতে password hashing এবং JWT টোকেন জেনারেশন করা যায়।

// models/user.model.js
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: 'Name is required',
  },
  email: {
    type: String,
    required: 'Email is required',
    unique: true,
  },
  password: {
    type: String,
    required: 'Password is required',
  },
});

// পাসওয়ার্ড হ্যাশিং
userSchema.pre('save', async function (next) {
  if (!this.isModified('password')) return next();
  this.password = await bcrypt.hash(this.password, 10);
  next();
});

// JWT টোকেন জেনারেট করা
userSchema.methods.generateAuthToken = function () {
  const token = jwt.sign({ _id: this._id }, 'secretkey', { expiresIn: '1h' });
  return token;
};

const User = mongoose.model('User', userSchema);
module.exports = User;

Step 3: Authentication Controller তৈরি করা

এখন, Authentication Controller তৈরি করতে হবে যেখানে লগইন করার জন্য JWT টোকেন জেনারেট করা হবে।

// controllers/auth.controller.js
const User = require('../models/user.model');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');

// লগইন ফাংশন
exports.login = async (req, res) => {
  const { email, password } = req.body;

  // ব্যবহারকারী খোঁজা
  const user = await User.findOne({ email });
  if (!user) return res.status(400).send('Invalid email or password.');

  // পাসওয়ার্ড যাচাই
  const isMatch = await bcrypt.compare(password, user.password);
  if (!isMatch) return res.status(400).send('Invalid email or password.');

  // JWT টোকেন তৈরি
  const token = user.generateAuthToken();
  res.send({ token });
};

Step 4: রাউট সেটআপ করা

এখন, লগইন রাউট তৈরি করতে হবে যেখানে ব্যবহারকারী POST রিকুয়েস্ট দিয়ে তার email এবং password পাঠাবে।

// routes/auth.routes.js
const express = require('express');
const router = express.Router();
const authController = require('../controllers/auth.controller');

// লগইন রাউট
router.post('/login', authController.login);

module.exports = router;

Step 5: JWT Middleware তৈরি করা

এখন, JWT Middleware তৈরি করতে হবে, যা ব্যবহারকারীর JWT টোকেন ভেরিফাই করবে।

// middleware/auth.middleware.js
const jwt = require('jsonwebtoken');

const authenticate = (req, res, next) => {
  const token = req.header('Authorization').replace('Bearer ', '');

  if (!token) {
    return res.status(401).send('Access denied. No token provided.');
  }

  try {
    const decoded = jwt.verify(token, 'secretkey');
    req.user = decoded;
    next();
  } catch (error) {
    return res.status(400).send('Invalid token.');
  }
};

module.exports = authenticate;

Step 6: Middleware ব্যবহার করা

আপনি যেখানে authentication প্রয়োজন, সেখানে এই authenticate middleware ব্যবহার করতে পারবেন।

// routes/protected.routes.js
const express = require('express');
const router = express.Router();
const authenticate = require('../middleware/auth.middleware');

// একটি প্রটেক্টেড রাউট
router.get('/protected', authenticate, (req, res) => {
  res.send('This is a protected route!');
});

module.exports = router;

সারাংশ

MeanJSAuthentication অত্যন্ত গুরুত্বপূর্ণ, এবং JWT (JSON Web Token) ব্যবহার করে এটি কার্যকরভাবে বাস্তবায়ন করা যায়। JWT টোকেন ব্যবহারকারীদের সুরক্ষিতভাবে লগইন করার অনুমতি দেয় এবং তাদের পরবর্তী রিকুয়েস্টের জন্য সিস্টেমে অ্যাক্সেস নিশ্চিত করে। এই পদ্ধতি ব্যবহার করে, আপনি আপনার অ্যাপ্লিকেশনে নিরাপদ ও সুরক্ষিত Authentication প্রক্রিয়া সহজেই সেটআপ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...