Rumah > pembangunan bahagian belakang > tutorial php > Pendaftaran dan Log masuk Symfony2

Pendaftaran dan Log masuk Symfony2

Joseph Gordon-Levitt
Lepaskan: 2025-02-17 11:23:09
asal
888 orang telah melayarinya

Butiran artikel ini Proses Pendaftaran Pengguna, Login, dan Post-Login Symfony2. Kami akan membina pangkalan data dan konfigurasi keselamatan dari Bahagian 1, yang memberi tumpuan kepada penciptaan bentuk, ketekunan objek pengguna, dan pengendalian kata laluan yang selamat.

Symfony2 Registration and Login

Konsep Utama:

  • Pendaftaran: Borang mengumpul data pengguna (e -mel, nama pengguna, kata laluan, dan lain -lain), memetakannya ke objek , dan berterusan objek ini ke pangkalan data. Jenis Borang Custom () menguruskan pemetaan medan dan pengendalian data. Aplikasi ini secara automatik hash kata laluan untuk keselamatan. User RegistrationType
  • Login:
  • Borang log masuk mudah, menyerahkan kepada , memerlukan "_username" dan "_password" medan -seperti yang diamanahkan oleh sistem keselamatan Symfony. /login_check
  • Tindakan Post-Login:
  • Antara muka keselamatan Symfony tidak mempunyai cangkuk post-login langsung. Kami akan melaksanakan pengendali kejayaan pengesahan tersuai untuk mengemas kini timestamp log masuk terakhir pengguna.
bentuk, pangkalan data, dan

: RegistrationType Proses pendaftaran menggunakan borang.

(terletak di

) mentakrifkan struktur bentuk: RegistrationType src/AppBundle/Form/Type/RegistrationType.php

class RegistrationType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('username', 'text', ['label' => 'User Name'])
                ->add('password', 'password', ['label' => 'Password'])
                ->add('confirm', 'password', ['mapped' => false, 'label' => 'Re-type password'])
                ->add('homepage', 'text', ['label' => 'Homepage'])
                ->add('email', 'hidden', ['label' => 'email'])
                ->add('save', 'submit', ['label' => 'Register']);
    }

    // ... (getName and setDefaultOptions methods) ...
}
Salin selepas log masuk
menghalang medan "Sahkan" daripada disimpan ke pangkalan data. Bentuknya dibuat dan diberikan menggunakan Twig:

'mapped' => false

{{ form_widget(form.username, {'attr': {'class': 'form-control', 'placeholder':'User Name'}}) }}
{{ form_widget(form.password, {'attr': {'class': 'form-control', 'placeholder':'Password'}}) }}
{{ form_widget(form.confirm, {'attr': {'class': 'form-control', 'placeholder':'Confirm Password'}}) }}
{{ form_widget(form.homepage, {'attr': {'class': 'form-control', 'placeholder':'Homepage'}}) }}
{{ form_widget(form.email, {'attr': {'value': email}}) }}
<!-- ... rest of the form ... -->
Salin selepas log masuk

Symfony2 Registration and Login Penciptaan Pengguna:

mengendalikan penyerahan borang, mencipta objek

, menetapkan sifat bukan pengguna yang disediakan (tarikh yang dibuat, peranan, gravatar), menyulitkan kata laluan menggunakan encoder kata laluan Symfony, dan berterusan pengguna:

createAction User

pengendalian login dan pasca login:
public function createAction(Request $req)
{
    // ... (get entity manager, create form, handle request) ...

    $user = $form->getData();
    $user->setCreated(new \DateTime());
    $user->setRoles(['ROLE_USER']);
    // ... (set gravatar and active status) ...

    $pwd = $user->getPassword();
    $encoder = $this->container->get('security.password_encoder');
    $pwd = $encoder->encodePassword($user, $pwd);
    $user->setPassword($pwd);

    $em->persist($user);
    $em->flush();

    return $this->redirect($this->generateUrl('login'));
}
Salin selepas log masuk

borang log masuk (menunjuk ke ) adalah mudah:

/login_check

<!-- ... login form with _username and _password fields ... -->
Salin selepas log masuk
tindakan pasca login memerlukan pengendali kejayaan pengesahan tersuai (ditakrifkan dalam

dan didaftarkan dalam Symfony2 Registration and Login ):

src/AppBundle/Handler/AuthenticationSuccessHandler.php pengendali ini mengemas kini medan services.yml dalam objek

selepas pengesahan yang berjaya.
class AuthenticationSuccessHandler extends DefaultAuthenticationSuccessHandler
{
    // ... (constructor with dependency injection) ...

    public function onAuthenticationSuccess(Request $request, TokenInterface $token)
    {
        $user = $token->getUser();
        $user->setLogged(new \DateTime());
        $em = $this->container->get('doctrine.orm.entity_manager');
        $em->persist($user);
        $em->flush();
        return $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request));
    }
}
Salin selepas log masuk

Panduan Komprehensif ini meliputi ciri pendaftaran dan log masuk Symfony2, menekankan amalan terbaik keselamatan dan kebolehcapaian. Penyesuaian selanjutnya, seperti Pengesahan Borang dan Integrasi Login Sosial, boleh diterokai berdasarkan keperluan aplikasi tertentu. logged

Atas ialah kandungan terperinci Pendaftaran dan Log masuk Symfony2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan