Zend Framework (এখন Laminas) এর Zend\Authentication এবং Zend\Session কম্পোনেন্টগুলোর মাধ্যমে ইউজার লগইন এবং সেশন ম্যানেজমেন্ট কার্যকরভাবে পরিচালনা করা যায়। এগুলি ব্যবহার করে আপনি ইউজারের লগইন যাচাই, সেশন পরিচালনা, এবং লগআউট প্রক্রিয়া সহজে সেটআপ করতে পারবেন।
Zend\Authentication ইউজারকে সিস্টেমে লগইন করার জন্য ব্যবহৃত হয়, এবং Zend\Session ইউজারের লগইন সেশন ট্র্যাক করতে এবং সেশন ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।
Zend\Authentication মডিউল
Zend\Authentication মডিউল ইউজার লগইন প্রক্রিয়া পরিচালনা করতে ব্যবহৃত হয়। এটি ইউজারের ক্রেডেনশিয়াল যাচাই করে এবং লগইন সফল হলে একটি AuthenticationResult অবজেক্ট রিটার্ন করে।
ইউজার লগইন প্রক্রিয়া
Zend Framework এ লগইন প্রক্রিয়া সাধারণত একটি AuthenticationService ব্যবহার করে বাস্তবায়ন করা হয়। এটি ইউজারের ইনপুট ডেটা যাচাই করে এবং সফল হলে সেশন তৈরি করে।
উদাহরণ: লগইন ফর্ম এবং লগইন যাচাই
- লগইন ফর্ম তৈরি
namespace Application\Form;
use Zend\Form\Form;
use Zend\InputFilter\InputFilter;
class LoginForm extends Form
{
public function __construct($name = null)
{
parent::__construct('login');
$this->add([
'name' => 'username',
'type' => 'Text',
'options' => [
'label' => 'Username',
],
]);
$this->add([
'name' => 'password',
'type' => 'Password',
'options' => [
'label' => 'Password',
],
]);
$this->add([
'name' => 'submit',
'type' => 'Submit',
'attributes' => [
'value' => 'Login',
'id' => 'submitbutton',
],
]);
// ইনপুট ফিল্টার যুক্ত করা
$inputFilter = new InputFilter();
$this->setInputFilter($inputFilter);
}
}
এখানে, একটি LoginForm তৈরি করা হয়েছে যা ইউজারের ইউজারনেম এবং পাসওয়ার্ড ইনপুট নেবে।
- AuthenticationService ব্যবহার করে লগইন যাচাই
namespace Application\Controller;
use Zend\Authentication\AuthenticationService;
use Zend\Authentication\Adapter\DbTable\CredentialValidationAdapter;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Application\Form\LoginForm;
class AuthController extends AbstractActionController
{
public function loginAction()
{
$form = new LoginForm();
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
$form->setData($data);
if ($form->isValid()) {
$username = $data['username'];
$password = $data['password'];
// AuthenticationService সেটআপ
$authService = new AuthenticationService();
// DB Adapter সেটআপ
$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$authAdapter = new CredentialValidationAdapter(
$dbAdapter,
'users', // টেবিলের নাম
'username', // ইউজারনেম কলাম
'password', // পাসওয়ার্ড কলাম
'MD5(?)' // পাসওয়ার্ড হ্যাশিং (এখানে MD5 ব্যবহার করা হচ্ছে)
);
// ইনপুট দেওয়া পাসওয়ার্ড
$authAdapter->setIdentity($username);
$authAdapter->setCredential($password);
// লগইন যাচাই
$result = $authService->authenticate($authAdapter);
if ($result->isValid()) {
// লগইন সফল হলে সেশন শুরু
$this->flashMessenger()->addSuccessMessage('Login successful!');
return $this->redirect()->toRoute('home');
} else {
$this->flashMessenger()->addErrorMessage('Invalid credentials!');
}
}
}
return new ViewModel([
'form' => $form,
]);
}
}
এখানে, Zend\Authentication\AuthenticationService এবং DbTable\CredentialValidationAdapter ব্যবহার করে ইউজারের ক্রেডেনশিয়াল যাচাই করা হচ্ছে। যদি লগইন সফল হয়, তবে সেশন শুরু হয় এবং ইউজারকে হোম পেজে রিডাইরেক্ট করা হয়।
Zend\Session: সেশন ম্যানেজমেন্ট
Zend\Session ব্যবহার করে ইউজারের লগইন স্টেট এবং অন্যান্য প্রয়োজনীয় ডেটা সেশন হিসেবে ট্র্যাক করা যায়। এটি ইউজারের তথ্য সংরক্ষণ এবং পুনরুদ্ধারের জন্য ব্যবহৃত হয়।
সেশন ব্যবহার
- সেশন শুরু করা
namespace Application\Controller;
use Zend\Session\Container;
use Zend\Mvc\Controller\AbstractActionController;
class AuthController extends AbstractActionController
{
public function loginAction()
{
$session = new Container('user'); // 'user' নামের সেশন কন্টেইনার
// লগইন সফল হলে সেশন ভেরিয়েবল সেট করা
if ($result->isValid()) {
$session->username = $username; // ইউজারনেম সেশন ভেরিয়েবল হিসেবে সংরক্ষণ
$this->flashMessenger()->addSuccessMessage('Login successful!');
return $this->redirect()->toRoute('home');
}
}
public function logoutAction()
{
$session = new Container('user');
unset($session->username); // সেশন থেকে ইউজারনেম রিমুভ করা
$this->flashMessenger()->addSuccessMessage('Logged out successfully!');
return $this->redirect()->toRoute('home');
}
}
এখানে, Zend\Session\Container ব্যবহার করে ইউজারের লগইন স্টেট সেশন কন্টেইনারে সংরক্ষিত হচ্ছে। লগইন হলে সেশন সেট করা হয় এবং লগআউট হলে সেশন থেকে ডেটা রিমুভ করা হয়।
সেশন কনফিগারেশন
Zend Framework বা Laminas এ সেশন কনফিগারেশন সাধারণত module.config.php ফাইলে করা হয়। সেশন কনফিগারেশনে আপনি সেশন লাইফটাইম, সেশন স্টোর, কুকি সেটিংস ইত্যাদি নির্ধারণ করতে পারেন।
উদাহরণ: সেশন কনফিগারেশন
return [
'session' => [
'config' => [
'class' => 'Zend\Session\Config\SessionConfig',
'options' => [
'name' => 'my_session',
'use_cookies' => true,
'cookie_lifetime' => 3600, // কুকি লাইফটাইম এক ঘণ্টা
],
],
'storage' => 'Zend\Session\Storage\SessionArrayStorage',
'validator' => [
'Zend\Session\Validator\HttpUserAgent',
'Zend\Session\Validator\RemoteAddr',
],
],
];
এখানে সেশন কনফিগারেশনে সেশন নাম, কুকি লাইফটাইম, এবং সেশন ভ্যালিডেটর কনফিগার করা হয়েছে।
সারাংশ
Zend Framework এ Zend\Authentication এবং Zend\Session মডিউল ইউজার লগইন এবং সেশন ম্যানেজমেন্টের জন্য অত্যন্ত গুরুত্বপূর্ণ। Zend\Authentication ইউজারের ক্রেডেনশিয়াল যাচাই করে এবং লগইন সফল হলে সেশন শুরু করে, যেখানে Zend\Session ব্যবহার করে ইউজারের লগইন স্টেট এবং অন্যান্য ডেটা সেশন কন্টেইনারে সংরক্ষিত থাকে। সঠিকভাবে লগইন এবং সেশন ম্যানেজমেন্ট কার্যকর করতে এগুলির সংমিশ্রণ অত্যন্ত সহায়ক।
Read more