Flask-Login দিয়ে User Authentication সিস্টেম তৈরি করা

Flask এবং Authentication - ফ্লাস্ক (Flask) - Web Development

300

Flask একটি মাইক্রোফ্রেমওয়ার্ক, যার মাধ্যমে আপনি সহজেই ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন। ইউজার অথেনটিকেশন সিস্টেম তৈরি করার জন্য Flask-Login একটি জনপ্রিয় এক্সটেনশন। এটি ইউজারের লগইন, লগআউট, সেশন ম্যানেজমেন্টসহ অন্যান্য গুরুত্বপূর্ণ ফিচার সরবরাহ করে।

Flask-Login কী?

Flask-Login Flask অ্যাপ্লিকেশনগুলিতে ইউজার অথেনটিকেশন এবং সেশন ব্যবস্থাপনা সহজ করে তোলে। এটি লগইন, লগআউট, সেশন ইত্যাদির জন্য উপকারী ফাংশনালিটি প্রদান করে।

Flask-Login দিয়ে User Authentication সিস্টেম তৈরি করার ধাপ:

ধাপ ১: Flask এবং Flask-Login ইনস্টল করা

প্রথমে, আপনাকে Flask এবং Flask-Login এক্সটেনশন ইনস্টল করতে হবে। এটি ইনস্টল করতে নিচের কমান্ডটি চালান:

pip install flask flask-login

ধাপ ২: Flask অ্যাপ্লিকেশন তৈরি করা

এখন একটি Flask অ্যাপ্লিকেশন তৈরি করুন এবং Flask-Login এক্সটেনশনটি ইমপোর্ট করুন।

from flask import Flask, render_template, redirect, url_for, request
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # সিকিউরিটি জন্য সিক্রেট কী

# Flask-Login কনফিগারেশন
login_manager = LoginManager()
login_manager.init_app(app)

# Dummy user database (এই অংশটিকে ডাটাবেসের সাথে পরিবর্তন করা যেতে পারে)
users = {'admin': {'password': 'admin'}}

# User class
class User(UserMixin):
    def __init__(self, id):
        self.id = id

# User loader function
@login_manager.user_loader
def load_user(user_id):
    return User(user_id) if user_id in users else None

@app.route('/')
def home():
    return render_template('home.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        
        # ইউজার যাচাই
        if username in users and users[username]['password'] == password:
            user = User(username)
            login_user(user)
            return redirect(url_for('dashboard'))
        else:
            return 'Invalid credentials'
    
    return render_template('login.html')

@app.route('/dashboard')
@login_required
def dashboard():
    return f'Hello, {current_user.id}! Welcome to the dashboard.'

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('home'))

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  1. UserMixin: Flask-Login এর একটি ক্লাস, যা User ক্লাসে অন্তর্ভুক্ত করা হয়। এটি ইউজারের কিছু ডিফল্ট ফাংশনালিটি প্রদান করে যেমন is_authenticated, is_active, এবং is_anonymous
  2. User class: এটি একটি কাস্টম ইউজার ক্লাস। এখানে id রয়েছে, যা ইউজারের ইউনিক আইডেন্টিফাইয়ার।
  3. login_manager.user_loader: এই ফাংশনটি ইউজারের আইডি দিয়ে ইউজার লোড করে। যখনই Flask-Login ইউজারটিকে সেশন থেকে রিকোভার করতে চায়, তখন এটি কাজ করে।
  4. @login_required: এই ডেকোরেটরটি ব্যবহার করা হয় যেখানে লগইন করা ইউজার ছাড়া অন্য কেউ অ্যাক্সেস করতে পারবে না।
  5. login_user(): এটি ইউজারের লগইন প্রক্রিয়া সম্পন্ন করে এবং ইউজারকে সেশন শুরু করতে সাহায্য করে।
  6. logout_user(): এটি ইউজারকে লগআউট করে এবং সেশন বন্ধ করে দেয়।

ধাপ ৩: HTML টেমপ্লেট তৈরি করা

home.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask Login</title>
</head>
<body>
    <h1>Welcome to Flask Authentication System</h1>
    {% if current_user.is_authenticated %}
        <p>Hello, {{ current_user.id }}! <a href="{{ url_for('logout') }}">Logout</a></p>
    {% else %}
        <p><a href="{{ url_for('login') }}">Login</a></p>
    {% endif %}
</body>
</html>

login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form method="POST">
        <label for="username">Username:</label>
        <input type="text" name="username" id="username" required><br>
        
        <label for="password">Password:</label>
        <input type="password" name="password" id="password" required><br>
        
        <button type="submit">Login</button>
    </form>
</body>
</html>

ধাপ ৪: অ্যাপ চালানো

  1. Home Page: হোম পেজে, যদি ইউজার লগইন থাকে, তবে তাকে হ্যালো বার্তা এবং লগআউট লিঙ্ক দেখানো হবে। অন্যথায়, লগইন লিঙ্ক দেখানো হবে।
  2. Login Page: এখানে ইউজার তার ইউজারনেম এবং পাসওয়ার্ড ইনপুট করে লগইন করতে পারবে।
  3. Dashboard Page: লগইন করা ইউজারকে ড্যাশবোর্ড পেজে নেওয়া হবে। @login_required ডেকোরেটর ইউজারের অথেনটিকেশন নিশ্চিত করে।
  4. Logout: লগআউট হলে, সেশন ক্লিয়ার হয়ে যায় এবং ইউজার হোম পেজে ফিরে যায়।

এভাবে আপনি Flask এবং Flask-Login এর মাধ্যমে একটি বেসিক ইউজার অথেনটিকেশন সিস্টেম তৈরি করতে পারেন। Flask-Login একটি সহজ ও শক্তিশালী পদ্ধতি, যা ইউজারের লগইন, লগআউট, সেশন ম্যানেজমেন্ট এবং অথেনটিকেশন সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...