Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Pengesahan Pengguna Automatik Selepas Pendaftaran di Symfony?

Bagaimana untuk Melaksanakan Pengesahan Pengguna Automatik Selepas Pendaftaran di Symfony?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-21 17:41:11622semak imbas

How to Implement Automatic User Authentication After Registration in Symfony?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn