Symfony2登録とログイン

Joseph Gordon-Levitt
リリース: 2025-02-17 11:23:09
オリジナル
816 人が閲覧しました

この記事では、Symfony2のユーザー登録、ログイン、およびロジン後のプロセスについて詳しく説明しています。 フォームの作成、ユーザーオブジェクトの永続性、およびパスワード処理を安全にすることに焦点を当て、パート1のデータベースとセキュリティ構成の上に構築されます。

Symfony2 Registration and Login

重要な概念:

  • 登録:フォームは、ユーザーデータ(電子メール、ユーザー名、パスワードなど)を収集し、オブジェクトにマッピングし、このオブジェクトをデータベースに持続させます。 カスタムフォームタイプ(User)は、フィールドマッピングとデータ処理を管理します。 アプリケーションは、セキュリティのためにパスワードを自動的にハッシュします。RegistrationType
  • ログイン:に送信する単純なログインフォームは、symfonyのセキュリティシステムによって義務付けられている「_username」と「_password」フィールドが必要です。 /login_check
  • ロジン後のアクション:
  • Symfonyのセキュリティインターフェイスには、直接のロジン後のフックがありません。 カスタム認証成功ハンドラーを実装して、ユーザーの最後のログインタイムスタンプを更新します。
  • フォーム、データベース、および

RegistrationType登録プロセスはフォームを使用します。

にある)は、フォームの構造を定義します:

RegistrationType src/AppBundle/Form/Type/RegistrationType.php

「確認」フィールドがデータベースに保存されないようにします。 フォームは、Twig:
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) ...
}
ログイン後にコピー
を使用して作成およびレンダリングされます

'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 ... -->
ログイン後にコピー

Symfony2 Registration and Login ユーザー作成:

ログインとロギン後の取り扱い:

createAction 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'));
}
ログイン後にコピー

ロジン後のアクションには、カスタム認証成功ハンドラー(/login_checkで定義され、

に登録)が必要です:
<!-- ... login form with _username and _password fields ... -->
ログイン後にコピー

Symfony2 Registration and Login このハンドラーは、認証を成功させた後、

オブジェクトのフィールドを更新します。 この包括的なガイドは、Symfony2の登録とログイン機能をカバーし、セキュリティのベストプラクティスとカスタマイズ可能性を強調しています。 フォーム検証やソーシャルログイン統合などのさらなるカスタマイズは、特定のアプリケーション要件に基づいて調査できます。

以上がSymfony2登録とログインの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート