Symfony 4 fosuserbundle

cre*_*hie 15 symfony fosuserbundle

我从Symfony 4开始,我想通过以下链接安装FosUserBundle:https://symfony.com/doc/master/bundles/FOSUserBundle/index.html

第一:

我的问题是我不知道在哪里找到"app/config/config.yml"文件来取消注释翻译并配置:

fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
    address: "%mailer_user%"
    sender_name: "%mailer_user%"
Run Code Online (Sandbox Code Playgroud)

第二:

我想我必须在"config/packages /"目录中创建security.yml文件,是吗?

第三:

并在哪个文件中添加路由?

请问你能帮帮我吗 ?:)

小智 18

我已经解决了这个问题:

  1. 使用composer下载FOSUserBundle:

    作曲家需要friendsofsymfony/user-bundle"~2.0"

在安装结束时,您将收到以下错误消息:

必须配置路径"fos_user"中的子节点"db_driver".

  1. 创建用户类创建src/Entity/User.php作为扩展FOSUserBundle BaseUser类的自定义用户类.
 <?php
//src/Entity/User.php

namespace 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
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 配置应用程序的security.yml修改config/packages/security.yaml以设置FOSUserBundle安全性
    security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true

    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
Run Code Online (Sandbox Code Playgroud)
  1. 配置FOSUserBundle为FOSUserBundle的配置创建新文件config/packages/fos_user.yaml
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: App\Entity\User
from_email:
    address: "vincent@vfac.fr"
    sender_name: "vincent@vfac.fr"
Run Code Online (Sandbox Code Playgroud)

更新config/packages/framework.yaml以添加模板配置

framework:
    templating:
        engines: ['twig', 'php']
Run Code Online (Sandbox Code Playgroud)
  1. 导入FOSUserBundle路由创建config/routes/fos_user.yaml
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
Run Code Online (Sandbox Code Playgroud)
  1. 更新数据库架构如果尚未完成,则必须创建数据库

php bin/console doctrine:database:create

使用User类实体中的信息更新架构

php bin/console doctrine:schema:update --force

此时,所有安装和配置都在Symfony 4中使用FOSUserBundle.运行以下命令检查是否一切正常

作曲家更新

如果您没有任何错误消息,可以测试!您可以运行Web服务器来测试您的应用程序

php bin/console server:启动

所有的教程在这里: https://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4


Sea*_*ami 14

这是我发现的解决方案.

第一:

app/config/config.yml不再存在而是已将配置移动到配置文件夹.对于FOS用户捆绑包的正确位置:/config/packages/fos_user.yaml.如前所述,使用dev-master版本的FOSUserBundle,它支持4(仍然有一些正在进行的工作,但足够好).

第二:

你是对的,一个简单的解决方案是做一个composer require security,配方将为你处理. https://symfony.com/doc/current/security.html了解更多信息.

第三:

默认的FOS用户包路由: fos_user: resource: "@FOSUserBundle/Resources/config/routing/all.xml"

有关FOS路由的更多信息(步骤6)非常有用 https://symfony.com/doc/master/bundles/FOSUserBundle/index.html

另外,我建议在symfony路由文档中查看yaml示例.在配置与FOS用户包相关的路由时,可能会使事情更加清晰. https://symfony.com/doc/current/routing.html

  • @DarraghEnright Fos用户包2.1现在支持symfony 4.我建议使用它.我确实得到了配方的错误,但是一旦你最初设置捆绑包就很容易解决. (2认同)

gha*_*eri 6

好吧我有同样的问题,它应该是第一个:因为@sean Baharmi说你应该创建/config/packages/fos_user.yaml和这样的inter配置

fos_user:
  db_driver: orm
  firewall_name: main
  user_class: App\Entity\Users
  from_email:
      address: "hello@youmail.com"
      sender_name: "Sender Name"
Run Code Online (Sandbox Code Playgroud)

然后在framework.yaml中你应该输入以下因为FOSUserBundle依赖

templating:
  engines: ['twig', 'php']
Run Code Online (Sandbox Code Playgroud)

也用于在/config/rourtes/routes.yaml add中添加路由

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
Run Code Online (Sandbox Code Playgroud)

然后就可以开始工作了

希望对你有用


小智 2

目前您无法在 Symfony4 上使用 FOSUSerBundle。支持尚未合并。您可以在这里关注开发。