Pengesahan Pengguna Automatik Selepas Pendaftaran
Dalam proses membina aplikasi perniagaan Symfony 2, adalah perkara biasa untuk menghadapi keperluan untuk pengesahan pengguna automatik selepas pendaftaran. Begini cara anda boleh mencapai ini:
Symfony 4.0 dan Ke Atas
Pendekatan untuk pengesahan automatik kekal tidak berubah daripada versi Symfony yang terdahulu. Berikut ialah contoh menggunakan AbstractController:
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. } }
Symfony 2.6.x - Symfony 3.0.x
Dalam versi ini, security.context tidak digunakan lagi demi keselamatan. token_storage. Berikut ialah pengawal yang dikemas kini:
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)); } }
Symfony 2.3.x
Dalam versi ini, tidak cukup untuk menetapkan token dalam konteks keselamatan; anda juga perlu menyimpannya ke sesi:
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 } }
Ingat untuk menggunakan UsernamePasswordToken dengan parameter berikut: Entiti Pengguna, Bukti Kelayakan Pengguna (pilihan), Nama Firewall, Peranan Pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan Pengguna Automatik Selepas Pendaftaran di Symfony?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!