Yii ফ্রেমওয়ার্কে User Authentication (ইউজার অথেন্টিকেশন) এবং Authorization (অথোরাইজেশন) নিরাপত্তা ব্যবস্থার গুরুত্বপূর্ণ অংশ। এগুলি অ্যাপ্লিকেশনের ব্যবহারকারীদের পরিচয় যাচাই এবং তাদের অনুমতি নির্ধারণের জন্য ব্যবহৃত হয়। Yii ফ্রেমওয়ার্কে এগুলি সহজে ইমপ্লিমেন্ট করার জন্য প্রস্তুত একটি সিস্টেম প্রদান করে।
ইউজার অথেন্টিকেশন (User Authentication)
অথেন্টিকেশন একটি প্রক্রিয়া যা নিশ্চিত করে যে, ব্যবহারকারী যে পরিচয় (যেমন, ইউজারনেম এবং পাসওয়ার্ড) প্রদান করছে, তা সঠিক কিনা। Yii ফ্রেমওয়ার্কে ইউজার অথেন্টিকেশন সাধারণত Yii\web\User ক্লাস ব্যবহার করে পরিচালিত হয়।
১. ইউজার অথেন্টিকেশন প্রক্রিয়া
ইউজার মডেল তৈরি করা: সাধারণভাবে, ইউজার অথেন্টিকেশনের জন্য একটি
Userমডেল তৈরি করা হয় যা ডেটাবেসে সংরক্ষিত ইউজারদের তথ্যের সাথে সম্পর্কিত থাকে।namespace app\models; use yii\db\ActiveRecord; class User extends ActiveRecord implements \yii\web\IdentityInterface { public static function findIdentity($id) { return static::findOne($id); } public static function findIdentityByAccessToken($token, $type = null) { return static::findOne(['auth_token' => $token]); } public function getId() { return $this->id; } public function getAuthKey() { return $this->auth_key; } public function validateAuthKey($authKey) { return $this->auth_key === $authKey; } public function validatePassword($password) { return \Yii::$app->getSecurity()->validatePassword($password, $this->password_hash); } }ইউজার লগইন প্রক্রিয়া: ইউজার লগইন করতে, আপনি ইউজারের পাসওয়ার্ড যাচাই করবেন এবং তারপর সেশন বা কুকি সেট করে লগইন সফল করবেন।
namespace app\controllers; use Yii; use yii\web\Controller; use app\models\User; use yii\web\IdentityInterface; class SiteController extends Controller { public function actionLogin() { $model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && $model->login()) { return $this->goBack(); } else { return $this->render('login', ['model' => $model]); } } }এখানে,
LoginFormএকটি ফর্ম মডেল যেখানে ইউজার নাম এবং পাসওয়ার্ডের জন্য ভ্যালিডেশন করা হয়, এবং লগইন সফল হলে সেশন শুরু হয়।Yii::$app->user->login() মেথড: লগইন করার জন্য Yii ফ্রেমওয়ার্কে
login()মেথড ব্যবহার করা হয় যা ইউজারের তথ্য সেশন বা কুকিতে সংরক্ষণ করে।Yii::$app->user->login($user);
২. লগআউট প্রক্রিয়া
লগআউট করার জন্য Yii::$app->user->logout() মেথড ব্যবহার করা হয়। এটি সেশনটি ধ্বংস করে এবং ব্যবহারকারীকে লগআউট অবস্থায় নিয়ে আসে।
Yii::$app->user->logout();
ইউজার অথোরাইজেশন (User Authorization)
অথোরাইজেশন হল এমন একটি প্রক্রিয়া, যেখানে যাচাই করা হয় যে, একজন ব্যবহারকারী তার নির্দিষ্ট কার্যক্রম করার অনুমতি পায় কিনা। Yii ফ্রেমওয়ার্কে Access Control Filter (ACF) এবং RBAC (Role-Based Access Control) ব্যবহার করে ইউজারের অনুমতি নিয়ন্ত্রণ করা যায়।
১. Access Control Filter (ACF)
Yii ফ্রেমওয়ার্কে AccessControl ফিল্টার ব্যবহার করে নির্দিষ্ট অ্যাকশন বা রিসোর্সের জন্য ইউজারের অনুমতি নিয়ন্ত্রণ করা যায়। এটি সাধারণত কন্ট্রোলার লেভেলে ব্যবহৃত হয়।
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
class SiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'actions' => ['index'],
'roles' => ['@'], // Logged-in users
],
[
'allow' => true,
'actions' => ['login'],
'roles' => ['?'], // Guest users
],
],
],
];
}
public function actionIndex()
{
return $this->render('index');
}
public function actionLogin()
{
return $this->render('login');
}
}
এখানে, @ নির্দেশ করে যে এটি লগইন করা ব্যবহারকারীদের জন্য প্রযোজ্য, এবং ? নির্দেশ করে যে এটি শুধু গেস্ট (অলগড-ইন) ব্যবহারকারীদের জন্য প্রযোজ্য।
২. RBAC (Role-Based Access Control)
Yii ফ্রেমওয়ার্কে RBAC ব্যবহার করে আপনি বিভিন্ন ভূমিকা (Role) এবং অনুমতি (Permission) নির্ধারণ করতে পারেন। এটি ইউজারদের বিভিন্ন রোল ও পারমিশনের উপর ভিত্তি করে তাদের কার্যক্রম নিয়ন্ত্রণ করে।
Role এবং Permission তৈরি করা:
প্রথমে, RBAC কনফিগারেশন ফাইলটি তৈরি করতে হবে এবং রোল ও পারমিশন সেট করতে হবে।
// config/web.php 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', ], ],রোল এবং পারমিশন অ্যাসাইন করা:
একবার কনফিগারেশন করা হলে, আপনি রোল এবং পারমিশন তৈরি করে ইউজারদের অ্যাসাইন করতে পারেন।
$auth = Yii::$app->authManager; // Permission তৈরি করা $createPost = $auth->createPermission('createPost'); $auth->add($createPost); // Role তৈরি করা $admin = $auth->createRole('admin'); $auth->add($admin); // Permission অ্যাসাইন করা $auth->addChild($admin, $createPost); // ইউজারকে রোল অ্যাসাইন করা $auth->assign($admin, $userId);RBAC ব্যবহার করা:
একবার ইউজারদের রোল অ্যাসাইন করা হলে, কন্ট্রোলার বা অ্যাকশন লেভেলে তাদের পারমিশন যাচাই করা যায়।
if (Yii::$app->user->can('createPost')) { // Create post logic }
৩. গেস্ট ইউজারের জন্য Access Control
গেস্ট ইউজারদের জন্য নির্দিষ্ট অ্যাকশনগুলো অ্যাক্সেস কন্ট্রোলের মাধ্যমে সীমাবদ্ধ করা যায়। উদাহরণস্বরূপ, শুধুমাত্র লগড-ইন ইউজারদের জন্য create অ্যাকশন খুলে রাখা যায়।
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'actions' => ['create'],
'roles' => ['@'], // Only logged-in users
],
[
'allow' => false,
'actions' => ['create'],
'roles' => ['?'], // Block for guests
],
],
],
];
}
সারাংশ
Yii ফ্রেমওয়ার্কে User Authentication এবং Authorization ব্যবস্থাগুলি খুবই শক্তিশালী এবং নমনীয়। Authentication ইউজারের পরিচয় যাচাই করে এবং Authorization ইউজারের অনুমতি নির্ধারণ করে। Access Control Filter এবং RBAC (Role-Based Access Control) ব্যবস্থার মাধ্যমে আপনি সহজেই ইউজারের অ্যাক্সেস নিয়ন্ত্রণ করতে পারবেন। এটি অ্যাপ্লিকেশনের নিরাপত্তা এবং ইউজার ম্যানেজমেন্টকে আরও শক্তিশালী করে।
Read more