Heim > Backend-Entwicklung > PHP-Tutorial > Symfony2 Registrierung und Anmeldung

Symfony2 Registrierung und Anmeldung

Joseph Gordon-Levitt
Freigeben: 2025-02-17 11:23:09
Original
820 Leute haben es durchsucht

Dieser Artikel beschreibt die Benutzerregistrierung, Anmeldung und Post-Login-Prozesse von Symfony2. Wir werden auf der Datenbank- und Sicherheitskonfiguration aus Teil 1 erstellen und sich auf die Erstellung von Formular, die Persistenz des Benutzerobjekts und das sicher

Symfony2 Registration and Login

Schlüsselkonzepte:

  • Registrierung: Ein Formular sammelt Benutzerdaten (E -Mail, Benutzername, Kennwort usw.), ordnet es einem -Objekt zu und hält dieses Objekt in der Datenbank weiter. Ein benutzerdefinierter Formulartyp (User) verwaltet die Feldzuordnung und die Datenbearbeitung. Die Anwendung hasst das Passwort automatisch für die Sicherheit. RegistrationType
  • Login: Ein einfaches Anmeldeformular, das an übermittelt wird, erfordert "_username" und "_password" -Felder - wie durch Symfony's Security System vorgeschrieben. /login_check.
  • Post-Login-Aktionen: Die Sicherheitsschnittstelle von Symfony fehlt direkte Post-Login-Haken. Wir werden einen benutzerdefinierten Authentifizierungserfolgshandler implementieren, um den letzten Anmeldezeitstempel des Benutzers zu aktualisieren.

Formular, Datenbank und : RegistrationType

Der Registrierungsprozess verwendet ein Formular. Das

(befindet sich in RegistrationType) definiert die Struktur des Formulars: 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) ...
}
Nach dem Login kopieren

verhindert, dass das Feld "Bestätigung" in der Datenbank gespeichert wird. Das Formular wird erstellt und unter Verwendung von Twig: 'mapped' => false erstellt und gerendert

{{ 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 ... -->
Nach dem Login kopieren

Symfony2 Registration and Login

Benutzererstellung:

Die

-Formungseinreichung erstellt ein createAction Objekt, legt nicht Benutzer bereitgestellt. User

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'));
}
Nach dem Login kopieren
Anmeldung und Post-Login-Handhabung:

Die Anmeldeform (auf

zeigt) ist einfach:

/login_check

<!-- ... login form with _username and _password fields ... -->
Nach dem Login kopieren

Symfony2 Registration and Login Post-Login-Aktionen erfordern einen benutzerdefinierten Authentifizierungserfolgshandler (definiert in

und in

registriert): src/AppBundle/Handler/AuthenticationSuccessHandler.php services.yml

Dieser Handler aktualisiert das Feld
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));
    }
}
Nach dem Login kopieren
im Objekt

nach erfolgreicher Authentifizierung. logged User Dieser umfassende Leitfaden deckt die Registrierung und Login -Funktionen von Symfony2 ab und betont die Best Practices und die Anpassbarkeit der Sicherheitsdienste. Weitere Anpassungen wie Formularvalidierung und Integration der sozialen Anmeldung können anhand der spezifischen Anwendungsanforderungen untersucht werden.

Das obige ist der detaillierte Inhalt vonSymfony2 Registrierung und Anmeldung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage