本文概述
- 1.创建传统的Web应用程序
- 2.安装FOSUserBundle
- 3.创建用户类别
- 4.更新安全配置文件
- 5.创建FOSUserBundle配置文件
- 6.允许PHP和Twig模板化并启用路由
- 7.更新你的数据库架构
- 8.测试用户系统
在本文中, 我们将向你展示如何在新的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}}}
至少获得欢迎页面后, 准备项目并使其运行:
文章图片
完成后, 继续下一步。
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 3中强制通过HTTPS(基于SSL的HTTP)进行访问
- 如何使用LFTP脚本使用LFTP(sftp)下载远程目录
- 如何使用Doctrine和Symfony 3实现Soundex搜索(在MySql中)
- 如何解决Ubuntu 16.04中的Plesk安装/升级错误(系统中没有/etc/localtime文件)
- 如何在AWS Ubuntu 16.04实例上以root身份允许SSH和SFTP访问
- 在Plesk中创建MySQL Server数据库的非增量(逻辑备份)自动备份外壳脚本(sh)
- 如何在Mac上找到Android SDK Manager路径
- Android向后兼容性
- 虽然不建议安装Android Studio SDK组件()