সিমফনি 4.0
এই প্রক্রিয়াটি সিমফনি 3 থেকে 4 এ পরিবর্তিত হয়নি তবে এখানে নতুন প্রস্তাবিত অ্যাবস্ট্রাক্ট্রন্ট্রোলার ব্যবহার করে একটি উদাহরণ দেওয়া হয়েছে। উভয়ই পরিষেবাগুলি security.token_storage
এবং session
পরিষেবাগুলি প্যারেন্ট getSubscribedServices
পদ্ধতিতে নিবন্ধভুক্ত রয়েছে যাতে আপনার নিয়ামকগুলিতে সেগুলি যুক্ত করতে হয় না।
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use YourNameSpace\UserBundle\Entity\User;
class LoginController extends AbstractController{
public function registerAction()
{
$user = //Handle getting or creating the user entity likely with a posted form
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->container->get('security.token_storage')->setToken($token);
$this->container->get('session')->set('_security_main', serialize($token));
// The user is now logged in, you can redirect or do whatever.
}
}
সিমফনি 2.6.x - সিমফনি 3.0.x
সিমফনি হিসাবে ২.6 security.context
এর পক্ষে অবমূল্যায়ন করা হয়েছে security.token_storage
। নিয়ামক এখন সহজভাবে হতে পারে:
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use YourNameSpace\UserBundle\Entity\User;
class LoginController extends Controller{
public function registerAction()
{
$user = //Handle getting or creating the user entity likely with a posted form
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
}
}
এটি অবহেলিত অবস্থায় আপনি এখনও ব্যবহার করতে পারবেন security.context
কারণ এটি পশ্চাদপটে সামঞ্জস্যপূর্ণ হয়েছে। সিমফনি 3 এর জন্য এটি আপডেট করার জন্য প্রস্তুত থাকুন
সুরক্ষার জন্য আপনি এখানে ২. changes টি পরিবর্তন সম্পর্কে আরও পড়তে পারেন: https://github.com/symfony/symfony/blob/2.6/UPGRADE-2.6.md
সিমফনি ২.৩.x
সিম্ফনি ২.৩ এ এটি পূরণ করতে আপনি আর সুরক্ষা প্রসঙ্গে টোকেনটি আর সেট করতে পারবেন না। আপনার সেশন টোকেন সংরক্ষণ করতে হবে।
ফায়ারওয়াল সহ সুরক্ষা ফাইলটি ধরে নেওয়া:
// app/config/security.yml
security:
firewalls:
main:
//firewall settings here
এবং একই রকম একটি নিয়ামক পদক্ষেপ:
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use YourNameSpace\UserBundle\Entity\User;
class LoginController extends Controller{
public function registerAction()
{
$user = //Handle getting or creating the user entity likely with a posted form
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.context')->setToken($token);
$this->get('session')->set('_security_main',serialize($token));
//Now you can redirect where ever you need and the user will be logged in
}
}
টোকেন তৈরির জন্য আপনি একটি তৈরি করতে চান UsernamePasswordToken
, এটি 4 টি পরামিতি গ্রহণ করে: ব্যবহারকারী সত্তা, ব্যবহারকারীর শংসাপত্র, ফায়ারওয়াল নাম, ব্যবহারকারীর ভূমিকা। টোকেনটি বৈধ হওয়ার জন্য আপনাকে ব্যবহারকারীর শংসাপত্র সরবরাহ করতে হবে না।
আমি 100% নিশ্চিত নই যে security.context
আপনি যদি এখনই পুনঃনির্দেশ করতে চলেছেন তবে টোকেনটি সেট করা প্রয়োজনীয়। তবে এটা মনে হচ্ছে না যে আমি এটিকে ফেলে রেখেছি।
তারপরে গুরুত্বপূর্ণ অংশটি সেশন ভেরিয়েবল নির্ধারণ করুন। ভেরিয়েবলের নামকরণ কনভেনশনটি _security_
আপনার ফায়ারওয়ালের নাম অনুসারে এই ক্ষেত্রে main
তৈরি হয়_security_main