steevanb/user-bundle

0.0.4 2021-11-29 16:25 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:41 UTC


README

version

安装

添加依赖

composer require steevanb/user-bundle 0.0.*
# If you want to validate User entity data
composer require symfony/validator symfony/translation

### 添加包

# config/bundles.php
return [
    Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
    steevanb\\UserBundle\UserBundle::class => ['all' => true]
]

### 配置安全性

# config/packages/security.yaml
security:
    encoders:
        App\Entity\User:
            algorithm: bcrypt
            cost: 12
    providers:
        database:
            entity:
                class: App\Entity\User
                property: username
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: ~
            provider: database
            form_login:
                login_path: login
                check_path: login
                default_target_path: index
                username_parameter: login[username]
                password_parameter: login[password]
                csrf_parameter: login[_token]
            logout:
                path: logout
    access_control:
        - { path: ^/secured-area, roles: ROLE_USER }

创建用户实体

创建实体

# src/Entity/User.php

namespace App\Entity;

use steevanb\UserBundle\Entity\AbstractUser;

class User extends AbstractUser
{
}

创建映射

#config/doctrine/User.orm.yml

App\Entity\User:
    type: entity
    table: user

    id:
        id:
            type: integer
            generator: { strategy: AUTO }
            options: { unsigned: true }

    fields:
        username:
            length: 50

        password:
            length: 64

        email:
            unique: true

        roles:
            type: array

        createdAt:
            type: datetime

创建SecurityController

# src/Controller/SecurityController.php
class SecurityController extends steevanb\UserBundle\Controller\AbstractSecurityController
{
    protected function createUser(): AbstractUser
    {
        # Create your User entity
        return new User();
    }

    protected function createRegisterForm(): FormInterface
    {
        return new RegisterType();
    }

    protected function createRegisteredResponse(): Response
    {
        return new Response('User registered.');
    }
}

登录

添加路由

# config/routes.yaml
login:
    path: /login
    controller: App\Controller\SecurityController::login

创建模板

{# templates/Security/login.html.twig #}

{% if error is not null %}
    <div class="alert alert-danger">{{ error }}</div>
{% endif %}

{{ form(formView) }}

登出

添加路由

logout:
    path: /logout

启用注册

注册不是必需的,默认情况下未启用。

添加路由

# config/routes.yaml
register:
    path: /register
    controller: App\Controller\SecurityController::register

创建RegisterType

# src/Form/Type/RegisterType.php

namespace App\Form\Type;

use steevanb\UserBundle\Form\Type\AbstractRegisterType;

class RegisterType extends AbstractRegisterType
{
}