Bagaimana untuk Melaksanakan Pengesahan Pengguna Automatik Selepas Pendaftaran di Symfony?

Mary-Kate Olsen
Lepaskan: 2024-11-21 17:41:11
asal
640 orang telah melayarinya

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.
    }
}
Salin selepas log masuk

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));
    }
}
Salin selepas log masuk

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
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan