如何在Symfony 4中安装和配置FOSUserBundle

本文概述

  • 1.创建传统的Web应用程序
  • 2.安装FOSUserBundle
  • 3.创建用户类别
  • 4.更新安全配置文件
  • 5.创建FOSUserBundle配置文件
  • 6.允许PHP和Twig模板化并启用路由
  • 7.更新你的数据库架构
  • 8.测试用户系统
【如何在Symfony 4中安装和配置FOSUserBundle】随着Symfony 4的推出, 很多东西发生了变化, 其中大部分是永久的。但是, 当你在不断处理相同事物(逻辑)的企业中工作时, 发现这些事物在新框架上的工作方式将很困难。 Symfony 4就是这种情况, 用户系统的实现变得更加容易。但是, 如果你喜欢FOSUserBundle所提供的便利, 那么你可能想知道, 仍然可以在Symfony 4上实现它。
在本文中, 我们将向你展示如何在新的Symfony 4项目中安装传统的FOSUserBundle。
1.创建传统的Web应用程序 为了在基于symfony 4的项目上实现FOSUserBundle, 你将需要使用Symfony的传统Web应用程序版本(该版本安装了必需的依赖项以创建Web应用程序, 例如Doctrine, Twig, SwiftMailer, Monolog等)。因此, 第一步, 请使用以下版本创建新的symfony项目:
composer create-project symfony/website-skeleton project_name

这将创建一个具有几个依赖项的项目, 如以下composer.json文件所示:
{"type": "project", "license": "proprietary", "require": {"php": "^7.1.3", "ext-iconv": "*", "sensio/framework-extra-bundle": "^5.1", "symfony/apache-pack": "^1.0", "symfony/asset": "^4.1", "symfony/console": "^4.1", "symfony/expression-language": "^4.1", "symfony/flex": "^1.0", "symfony/form": "^4.1", "symfony/framework-bundle": "^4.1", "symfony/lts": "^4@dev", "symfony/monolog-bundle": "^3.1", "symfony/orm-pack": "*", "symfony/process": "^4.1", "symfony/security-bundle": "^4.1", "symfony/serializer-pack": "*", "symfony/swiftmailer-bundle": "^3.1", "symfony/twig-bundle": "^4.1", "symfony/validator": "^4.1", "symfony/web-link": "^4.1", "symfony/yaml": "^4.1"}, "require-dev": {"symfony/debug-pack": "*", "symfony/dotenv": "^4.1", "symfony/maker-bundle": "^1.0", "symfony/profiler-pack": "*", "symfony/test-pack": "^1.0", "symfony/web-server-bundle": "^4.1"}, "config": {"preferred-install": {"*": "dist"}, "sort-packages": true}, "autoload": {"psr-4": {"App\\": "src/"}}, "autoload-dev": {"psr-4": {"App\\Tests\\": "tests/"}}, "replace": {"symfony/polyfill-iconv": "*", "symfony/polyfill-php71": "*", "symfony/polyfill-php70": "*", "symfony/polyfill-php56": "*"}, "scripts": {"auto-scripts": {"cache:clear": "symfony-cmd", "assets:install %PUBLIC_DIR%": "symfony-cmd"}, "post-install-cmd": ["@auto-scripts"], "post-update-cmd": ["@auto-scripts"]}, "conflict": {"symfony/symfony": "*"}, "extra": {"symfony": {"allow-contrib": false}}}

至少获得欢迎页面后, 准备项目并使其运行:
如何在Symfony 4中安装和配置FOSUserBundle

文章图片
完成后, 继续下一步。
2.安装FOSUserBundle 创建项目后, 使用以下命令继续使用composer安装FOSUserBundle:
composer require friendsofsymfony/user-bundle "~2.0"

这将从安装开始, 并且你不需要在内核中进行任何配置或类似的操作, 但是在过程完成后, 你会发现一条错误消息:
必须配置路径” fos_user” 处的子节点” db_driver” 。
忽略它, 继续下一步。
3.创建用户类别 接下来, 你需要在项目中创建User实体, 即处理用户对象的类对象。在使用FOSUserBundle时, 该类具有以下结构, 因此请确保在/ project / src / Entity目录中使用名称User.php和以下内容创建文件:
< ?php// src/Entity/User.phpnamespace App\Entity; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="fos_user") */class User extends BaseUser{/*** @ORM\Id* @ORM\Column(type="integer")* @ORM\GeneratedValue(strategy="AUTO")*/protected $id; public function __construct(){parent::__construct(); // your own logic}}

4.更新安全配置文件 创建用户实体后, 你需要更改安全配置, 将FOSUserBundle编码器设置为默认值, 以将其定义为安全提供者。
编辑/project/config/packages/security.yaml文件, 并使用以下内容更改其内容:
# config/packages/security.yamlsecurity:encoders:FOS\UserBundle\Model\UserInterface: bcryptrole_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN: ROLE_ADMIN# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providersproviders:fos_userbundle:id: fos_user.user_provider.username_emailfirewalls:dev:pattern: ^/(_(profiler|wdt)|css|images|js)/security: falsemain:pattern: ^/form_login:provider: fos_userbundlecsrf_token_generator: security.csrf.token_managerlogout:trueanonymous:true# Easy way to control access for large sections of your site# Note: Only the *first* access control that matches will be usedaccess_control:- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }- { path: ^/admin/, role: ROLE_ADMIN }

5.创建FOSUserBundle配置文件 将FOSUserBundle定义为默认用户提供程序后, 你需要定义其配置。在Symfony 4中, 这可以通过新的yaml文件/project/config/packages/fos_user.yaml来完成, 该文件将具有此捆绑包的默认配置:
# config/packages/fos_user.yamlfos_user:db_driver: orm # other valid values are 'mongodb' and 'couchdb'firewall_name: mainuser_class: App\Entity\Userfrom_email:address: "test@domain.com"sender_name: "test@domain.com"

6.允许PHP和Twig模板化并启用路由 根据FOSUserBundle的要求, 必须启用PHP和Twig模板引擎, 因此请确保在/project/config/packages/framework.yaml文件中启用它:
framework:templating:engines: ['twig', 'php']

你还需要启用FOSUserBundle路由, 因此使用文件/project/config/routes/fos_user.yaml为FOSUserBundle创建路由文件, 并添加以下内容:
fos_user:resource: "@FOSUserBundle/Resources/config/routing/all.xml"

这将注册FOSUserBundle的默认路由, 例如登录, 注销, 注册等。
7.更新你的数据库架构 最后, 你只需要使用以下命令来更新数据库的架构:
php bin/console doctrine:schema:update --force

这将在数??据库中创建fos_user表, 你将能够注册用户。通过此步骤, 完成FOSUserBundle的安装和设置。
8.测试用户系统 最后一步, 你可以在访问Web项目的项目中测试FOSUserBundle, 例如在注册路径(例如http:// yourproject / register)上, 你将在其中找到FOSUserBundle的形式:
如何在Symfony 4中安装和配置FOSUserBundle

文章图片
编码愉快!

    推荐阅读