ইউজার লগইন সিস্টেম (Login/Session) তৈরি করা?

 



ইউজার লগইন সিস্টেম (Login/Session) তৈরি করা

একটি নিরাপদ এবং কার্যকর ইউজার লগইন সেশন ম্যানেজমেন্ট সিস্টেম তৈরি করার জন্য সাধারণত কয়েকটি ধাপ অনুসরণ করতে হয় নিচে এর মূল কাঠামো এবং কাজের ধাপগুলো আলোচনা করা হলো:


. প্রয়োজনীয় উপাদান (Key Components)

একটি পূর্ণাঙ্গ লগইন সিস্টেমের জন্য সাধারণত তিনটি প্রধান অংশ থাকে:

  • Database: যেখানে ব্যবহারকারীর তথ্য (Username, Hashed Password) জমা থাকে
  • Backend Server: যা পাসওয়ার্ড যাচাই করে এবং সেশন তৈরি করে
  • Frontend: যেখানে ব্যবহারকারী ইউজারনেম এবং পাসওয়ার্ড ইনপুট দেয়

. লগইন সিস্টেম তৈরির ধাপসমূহ

ধাপ : রেজিস্ট্রেশন পাসওয়ার্ড হ্যাশিং

সরাসরি পাসওয়ার্ড ডাটাবেজে সেভ করা অত্যন্ত ঝুঁকিপূর্ণ। এর পরিবর্তে BCrypt বা Argon2 এর মতো অ্যালগরিদম ব্যবহার করে পাসওয়ার্ড "Hash" করে রাখা উচিত

ধাপ : ইউজার অথেন্টিকেশন (Authentication)

যখন ইউজার লগইন করার চেষ্টা করেন: . ডাটাবেজ থেকে ওই ইউজারের তথ্য খুঁজে বের করা হয়। . ইউজারের দেওয়া পাসওয়ার্ডের সাথে ডাটাবেজের হ্যাশ করা পাসওয়ার্ডটি মিলিয়ে দেখা হয়

ধাপ : সেশন ম্যানেজমেন্ট (Session vs JWT)

ইউজার লগইন করার পর সার্ভার তাকে কীভাবে চিনবে? এর জন্য দুটি জনপ্রিয় পদ্ধতি আছে:

পদ্ধতি

বর্ণনা

Session-Based

সার্ভার একটি 'Session ID' তৈরি করে এবং সেটি ইউজারের ব্রাউজারে 'Cookie' হিসেবে পাঠিয়ে দেয়। ডাটা সার্ভার মেমোরিতে থাকে

Token-Based (JWT)

সার্ভার একটি এনক্রিপ্টেড টোকেন (JSON Web Token) তৈরি করে ইউজারকে দেয়। এটি মোবাইল অ্যাপ বা মডার্ন ওয়েব অ্যাপের জন্য বেশি উপযোগী

Export to Sheets


. সিকিউরিটি চেকলিস্ট

লগইন সিস্টেমকে নিরাপদ রাখতে নিচের বিষয়গুলো নিশ্চিত করুন:

  • HTTPS ব্যবহার করা: যাতে ডাটা আদান-প্রদানের সময় কেউ হ্যাক করতে না পারে
  • SQL Injection প্রতিরোধ: ডাটাবেজ কুয়েরি করার সময় 'Prepared Statements' ব্যবহার করা
  • Rate Limiting: কেউ যেন বারবার ভুল পাসওয়ার্ড দিয়ে আপনার সিস্টেম আক্রমণ (Brute Force) করতে না পারে
  • CSRF Protection: সেশন কুকি ব্যবহারের সময় ক্রস-সাইট রিকোয়েস্ট ফোরজারি থেকে সুরক্ষা নিশ্চিত করা

. একটি সাধারণ লজিক ফ্লো (Pseudocode)

JavaScript

// . ইউজার ডাটা গ্রহণ

// . ডাটাবেজে ইউজার আছে কি না চেক

// . পাসওয়ার্ড ম্যাচ করলে সেশন তৈরি

if (passwordMatches(inputPassword, storedHash)) {

    createSession(user.id);

    redirectToDashboard();

} else {

    showErrorMessage("ভুল ইউজারনেম বা পাসওয়ার্ড");

}

বর্তমানে ওয়েব ডেভেলপমেন্টের জন্য Node.js (Express) এবং PHP এই দুটি পদ্ধতি সবচেয়ে বেশি জনপ্রিয় নিচে আমি Node.js এবং Express ব্যবহার করে একটি সহজ নিরাপদ লগইন সিস্টেমের উদাহরণ দিচ্ছি, যেখানে পাসওয়ার্ড সুরক্ষার জন্য bcrypt ব্যবহার করা হয়েছে


Node.js Express ব্যবহার করে লগইন সিস্টেম

এই উদাহরণে আমরা ধরে নিচ্ছি আপনার একটি ইউজার ডাটাবেজ আছে। এখানে মূলত পাসওয়ার্ড যাচাই এবং সেশন তৈরির লজিকটি দেখানো হলো:

. প্রয়োজনীয় প্যাকেজ ইনস্টল করা

প্রথমে আপনার প্রোজেক্টে এই লাইব্রেরিগুলো যুক্ত করে নিন:

Bash

npm install express bcryptjs express-session

. লগইন লজিক (Server-side Code)

নিচে একটি সহজ রাউট বা পাথ তৈরি করা হয়েছে যা লগইন রিকোয়েস্ট হ্যান্ডেল করবে:

JavaScript

const express = require('express');

const bcrypt = require('bcryptjs');

const session = require('express-session');

const app = express();

 

// সেশন কনফিগারেশন

app.use(session({

    secret: 'your_secret_key', // এটি একটি গোপন কী হতে হবে

    resave: false,

    saveUninitialized: true,

    cookie: { secure: false } // প্রোডাকশনে এটি true (HTTPS) হতে হবে

}));

 

app.use(express.json()); // JSON ডাটা পড়ার জন্য

 

// ডামি ইউজার ডাটা (বাস্তবে এটি ডাটাবেজ থেকে আসবে)

const users = [

    { id: 1, email: "user@example.com", passwordHash: "$2a$10$..." }

];

 

// লগইন রাউট

app.post('/login', async (req, res) => {

    const { email, password } = req.body;

 

    // . ইউজার খুঁজে বের করা

    const user = users.find(u => u.email === email);

    if (!user) {

        return res.status(400).send("ইউজার পাওয়া যায়নি।");

    }

 

    // . পাসওয়ার্ড যাচাই করা

    const isMatch = await bcrypt.compare(password, user.passwordHash);

   

    if (isMatch) {

        // . সেশন তৈরি করা

        req.session.userId = user.id;

        res.send("লগইন সফল হয়েছে!");

    } else {

        res.status(400).send("ভুল পাসওয়ার্ড।");

    }

});

 

app.listen(3000, () => console.log("সার্ভার চলছে পোর্ট ৩০০০-"));


কেন এই পদ্ধতিটি নিরাপদ?

  • Bcrypt: এটি ব্যবহারকারীর আসল পাসওয়ার্ড সরাসরি সার্ভারে না রেখে একটি এনক্রিপ্টেড কোড (Hash) হিসেবে চেক করে
  • Express Session: এটি ব্রাউজারে একটি connect.sid নামক কুকি পাঠায়, যা দিয়ে সার্ভার বুঝতে পারে পরবর্তী রিকোয়েস্টটি কোন ইউজারের কাছ থেকে আসছে

 


Post a Comment

0 Comments