User Authentication তৈরি এবং পরিচালনা

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Authentication এবং Security |
2

User Authentication (ব্যবহারকারী প্রমাণীকরণ) হল অ্যাপ্লিকেশনে ব্যবহারকারীদের সনাক্ত করার প্রক্রিয়া। এটি সাধারণত username/password, OAuth, অথবা JWT (JSON Web Tokens) এর মাধ্যমে পরিচালিত হয়। ExtJS ফ্রেমওয়ার্ক ব্যবহার করে আপনি একটি কার্যকরী ইউজার অথেনটিকেশন সিস্টেম তৈরি করতে পারেন যা ফ্রন্টএন্ড এবং ব্যাকএন্ডের মধ্যে ইন্টিগ্রেশন তৈরি করবে।

এখানে, আমরা ExtJS ব্যবহার করে একটি সিম্পল ইউজার অথেনটিকেশন সিস্টেম তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপ আলোচনা করব।


১. Client-side Authentication Form

প্রথমে, একটি লগইন ফর্ম তৈরি করতে হবে যা ব্যবহারকারীর username এবং password ইনপুট নেবে। এই ফর্মটির মাধ্যমে ইউজার ইনপুট প্রক্রিয়া হবে এবং এরপর সেই তথ্য সার্ভারে পাঠানো হবে যাচাইয়ের জন্য।

লগইন ফর্ম উদাহরণ:

Ext.create('Ext.form.Panel', {
    title: 'Login Form',
    width: 350,
    bodyPadding: 10,
    renderTo: Ext.getBody(),
    items: [
        {
            xtype: 'textfield',
            name: 'username',
            fieldLabel: 'Username',
            allowBlank: false // ইউজারনেম অবশ্যই দিতে হবে
        },
        {
            xtype: 'textfield',
            name: 'password',
            fieldLabel: 'Password',
            inputType: 'password',
            allowBlank: false // পাসওয়ার্ড অবশ্যই দিতে হবে
        }
    ],
    buttons: [{
        text: 'Login',
        handler: function() {
            var form = this.up('form').getForm();
            if (form.isValid()) {
                // Form valid হলে, AJAX রিকোয়েস্ট সার্ভারে পাঠানো হবে
                var values = form.getValues();
                authenticateUser(values);
            }
        }
    }]
});

এখানে:

  • allowBlank: false: এটি নিশ্চিত করবে যে ব্যবহারকারী ইউজারনেম এবং পাসওয়ার্ড ইনপুট করবে।
  • inputType: 'password': পাসওয়ার্ড ফিল্ডে সাধারণভাবে টেক্সট আউটপুট না হয়ে পাসওয়ার্ড ফিল্ড হিসেবে প্রদর্শিত হবে।

২. Client-side Authentication Function

ইউজার তথ্য যাচাইয়ের জন্য আমরা একটি authenticateUser() ফাংশন তৈরি করব, যা সার্ভারে লগইন তথ্য পাঠাবে এবং সার্ভার থেকে সাড়া গ্রহণ করবে। সাধারণত এটি AJAX রিকোয়েস্টের মাধ্যমে করা হয়।

সার্ভারে অথেনটিকেশন রিকোয়েস্ট পাঠানো:

function authenticateUser(userData) {
    Ext.Ajax.request({
        url: 'authenticate.php', // সার্ভারে রিকোয়েস্ট পাঠানোর URL
        method: 'POST',
        params: userData, // ইউজার ইনপুট পাঠানো
        success: function(response) {
            var result = Ext.decode(response.responseText);
            if (result.success) {
                Ext.Msg.alert('Success', 'Login successful!');
                // এরপর আপনি ইউজারকে ড্যাশবোর্ড বা হোমপেজে পাঠাতে পারেন
            } else {
                Ext.Msg.alert('Failure', 'Invalid credentials');
            }
        },
        failure: function(response) {
            Ext.Msg.alert('Error', 'Server error occurred');
        }
    });
}

এখানে:

  • Ext.Ajax.request() ব্যবহার করে সার্ভারের কাছে রিকোয়েস্ট পাঠানো হচ্ছে।
  • সার্ভার থেকে সফল রেসপন্স পেলে success মেসেজ দেখানো হবে এবং ব্যর্থ হলে failure মেসেজ দেখানো হবে।

৩. Server-side Authentication

সার্ভারে ইউজার অথেনটিকেশন করা হয় সাধারণত ডাটাবেসের মাধ্যমে, যেখানে ইউজারের তথ্য যাচাই করা হয়। নিচে একটি PHP উদাহরণ দেওয়া হচ্ছে যা username এবং password যাচাই করবে।

PHP Server-side Authentication উদাহরণ:

<?php
// authenticate.php

$username = $_POST['username'];
$password = $_POST['password'];

// ডাটাবেস সংযোগ (MySQLi বা PDO ব্যবহার করে)
$conn = new mysqli("localhost", "root", "", "mydatabase");

// ব্যবহারকারীর তথ্য যাচাই করা
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // ইউজার পাওয়া গেলে, লগইন সফল
    echo json_encode(['success' => true]);
} else {
    // ইউজার না পাওয়া গেলে, লগইন ব্যর্থ
    echo json_encode(['success' => false]);
}

$conn->close();
?>

এখানে:

  • $_POST['username'] এবং $_POST['password'] দিয়ে ইউজারের ইনপুট গ্রহণ করা হচ্ছে।
  • SQL Query ব্যবহার করে ইউজারের তথ্য যাচাই করা হচ্ছে।
  • json_encode() দিয়ে সার্ভার রেসপন্স JSON ফরম্যাটে পাঠানো হচ্ছে, যাতে ফ্রন্টএন্ডে তা সহজে পার্স করা যায়।

৪. JWT (JSON Web Token) ভিত্তিক Authentication

এটি একটি উন্নত অথেনটিকেশন পদ্ধতি যেখানে সার্ভার ইউজারকে একটি JWT Token প্রদান করে, যা পরবর্তী রিকোয়েস্টের মাধ্যমে প্রমাণীকরণের জন্য ব্যবহৃত হয়।

JWT Authentication উদাহরণ:

  1. সার্ভারে JWT তৈরি করা (PHP):
<?php
// jwt-encode.php

use \Firebase\JWT\JWT;

$key = "secret_key"; // সিক্রেট কীগুলি একে অপরের মধ্যে সুরক্ষিত হওয়া উচিত
$issuedAt = time();
$expirationTime = $issuedAt + 3600;  // টোকেনের মেয়াদ এক ঘণ্টা
$payload = array(
    "iat" => $issuedAt,
    "exp" => $expirationTime,
    "username" => $username
);

// JWT এনকোড করা
$jwt = JWT::encode($payload, $key);

echo json_encode(["token" => $jwt]);
?>
  1. টোকেন যাচাই করা (PHP):
<?php
// jwt-decode.php

use \Firebase\JWT\JWT;

$key = "secret_key";
$jwt = $_GET['token'];  // ক্লায়েন্ট থেকে JWT নেওয়া হচ্ছে

try {
    // টোকেন ডিকোড করা
    $decoded = JWT::decode($jwt, $key, array('HS256'));
    echo json_encode(['success' => true, 'data' => $decoded]);
} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => 'Invalid Token']);
}
?>

এখানে:

  • JWT::encode(): এটি টোকেন তৈরি করে এবং সার্ভার দ্বারা সুরক্ষিত করা হয়।
  • JWT::decode(): এটি ক্লায়েন্টের পাঠানো টোকেন যাচাই করে এবং সঠিক হলে অনুমোদন প্রদান করে।

৫. Client-side Token Validation

ক্লায়েন্ট সাইডে, আপনি টোকেনটি লোকালস্টোরেজ বা সেশন স্টোরেজে সংরক্ষণ করতে পারেন এবং পরবর্তী রিকোয়েস্টে টোকেন পাঠাতে পারেন।

// লগইন সফল হলে টোকেন সংগ্রহ করা
localStorage.setItem('auth_token', response.token);

// পরবর্তী রিকোয়েস্টে টোকেন পাঠানো
var token = localStorage.getItem('auth_token');
Ext.Ajax.request({
    url: 'jwt-decode.php?token=' + token,
    method: 'GET',
    success: function(response) {
        var result = Ext.decode(response.responseText);
        if (result.success) {
            // টোকেন ভ্যালিড হলে, ইউজারকে ড্যাশবোর্ডে পাঠানো হবে
        } else {
            Ext.Msg.alert('Error', 'Invalid Token');
        }
    }
});

সারাংশ

  1. Client-side Authentication: ExtJS ফর্ম ব্যবহারকারীদের লগইন করার জন্য username/password গ্রহণ করে এবং AJAX রিকোয়েস্টের মাধ্যমে সার্ভারে পাঠানো হয়।
  2. Server-side Authentication: সার্ভার ইউজার তথ্য যাচাই করে এবং সফল হলে JWT (JSON Web Token) প্রদান করে।
  3. JWT: এটি একটি উন্নত অথেনটিকেশন পদ্ধতি যেখানে সার্ভার ইউজারের লগইন তথ্য যাচাই করার পর একটি সুরক্ষিত টোকেন প্রদান করে, যা পরবর্তী রিকোয়েস্টে ব্যবহৃত হয়।
  4. Token Storage: JWT টোকেন সুরক্ষিতভাবে localStorage বা sessionStorage এ সংরক্ষণ করা যেতে পারে।

এই পদ্ধতিগুলি ব্যবহার করে আপনি একটি শক্তিশালী এবং সুরক্ষিত User Authentication সিস্টেম তৈরি করতে পারবেন।

Content added By
Promotion