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)
এখানে:
- UserMixin: Flask-Login এর একটি ক্লাস, যা User ক্লাসে অন্তর্ভুক্ত করা হয়। এটি ইউজারের কিছু ডিফল্ট ফাংশনালিটি প্রদান করে যেমন
is_authenticated,is_active, এবংis_anonymous। - User class: এটি একটি কাস্টম ইউজার ক্লাস। এখানে
idরয়েছে, যা ইউজারের ইউনিক আইডেন্টিফাইয়ার। - login_manager.user_loader: এই ফাংশনটি ইউজারের আইডি দিয়ে ইউজার লোড করে। যখনই Flask-Login ইউজারটিকে সেশন থেকে রিকোভার করতে চায়, তখন এটি কাজ করে।
- @login_required: এই ডেকোরেটরটি ব্যবহার করা হয় যেখানে লগইন করা ইউজার ছাড়া অন্য কেউ অ্যাক্সেস করতে পারবে না।
- login_user(): এটি ইউজারের লগইন প্রক্রিয়া সম্পন্ন করে এবং ইউজারকে সেশন শুরু করতে সাহায্য করে।
- 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>
ধাপ ৪: অ্যাপ চালানো
- Home Page: হোম পেজে, যদি ইউজার লগইন থাকে, তবে তাকে হ্যালো বার্তা এবং লগআউট লিঙ্ক দেখানো হবে। অন্যথায়, লগইন লিঙ্ক দেখানো হবে।
- Login Page: এখানে ইউজার তার ইউজারনেম এবং পাসওয়ার্ড ইনপুট করে লগইন করতে পারবে।
- Dashboard Page: লগইন করা ইউজারকে ড্যাশবোর্ড পেজে নেওয়া হবে।
@login_requiredডেকোরেটর ইউজারের অথেনটিকেশন নিশ্চিত করে। - Logout: লগআউট হলে, সেশন ক্লিয়ার হয়ে যায় এবং ইউজার হোম পেজে ফিরে যায়।
এভাবে আপনি Flask এবং Flask-Login এর মাধ্যমে একটি বেসিক ইউজার অথেনটিকেশন সিস্টেম তৈরি করতে পারেন। Flask-Login একটি সহজ ও শক্তিশালী পদ্ধতি, যা ইউজারের লগইন, লগআউট, সেশন ম্যানেজমেন্ট এবং অথেনটিকেশন সহজ করে তোলে।
Read more