artdevelopp / user-bundle
提供用户管理的Bundle
Requires
This package is auto-updated.
Last update: 2024-09-06 16:17:17 UTC
README
ArtDevelopp user bundle是一个简化在symfony应用中连接和管理用户的bundle。
先决条件
-
安装symfony的security/bundle包
composer require symfony/security-bundle
-
该Bundle的模板使用Bootstrap v4.3
将Bundle添加到项目中
1- 执行命令 composer require artdevelopp/user-bundle
2- 将以下行添加到您的 "config/bundles.php" 文件末尾
ArtDevelopp\UserBundle\ArtdeveloppUserBundle::class => ['all' => true],
设置参数
在 /config/packages/ 目录中创建一个 artdevelopp_user.yaml 文件
artdevelopp_user:
#paramètre obligatoire:
mail_sender_address: 'noreply@example.net'
#paramètre facultatif
user_register: true #enregistrement ouvert à tous/ Par defaut true
loginWith: 'email' #Par defaut email −> email ou username
user_class: 'App\Entity\User' #par défaut 'App\Entity\User'
confirm_email: true #envoi email confirmation / Par defaut true
role_admin: ROLE_ADMIN #par défaut ROLE_ADMIN
reset_role: false #remise du role par défaut après changement mot de passe −> true ou false / Par defaut: false
default_role: ROLE_USER #role par défaut ROLE_USER
配置邮件
该Bundle使用Symfony Mailer发送邮件,请参考文档以在项目中配置:[https://symfony.com.cn/doc/current/mailer.html#transport-setup](https://symfony.com.cn/doc/current/mailer.html#transport-setup)
创建User实体
模拟创建一个未定义属性的User实体,这将创建两个文件:Entity和Repository。
替换文件User.php中的代码,位于Entity目录中,内容如下:
<?php
// src/Entity/User.php
namespace App\Entity;
use App\Repository\UserRepository;
use ArtDevelopp\UserBundle\Model\User as ModelUser;
use ArtDevelopp\UserBundle\Model\UserInterface;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
#[ORM\Entity(repositoryClass: UserRepository::class)]
#[UniqueEntity('email')]
#[UniqueEntity('username')]
class User implements UserInterface, PasswordAuthenticatedUserInterface
{
use ModelUser;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
public function getUserIdentifier(): string
{
return $this->email; //Modifier l'attribut si besoin email ou username
}
}
执行迁移
对设置的实体执行数据库迁移
配置密码哈希器
在文件 config/packages/security.yaml 中配置password_hachers如下:
password_hashers:
App\Entity\User:
algorithm: auto
配置User Provider
在文件 config/packages/security.yaml 中配置User Provider:[https://symfony.com.cn/doc/current/security.html#loading-the-user-the-user-provider](https://symfony.com.cn/doc/current/security.html#loading-the-user-the-user-provider)
# config/packages/security.yaml
security:
# ...
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email #email ou username
配置Firewall
仍然在文件 config/packages/security.yaml 中,按以下方式配置firewall:
main:
user_checker: ArtDevelopp\UserBundle\Security\UserChecker
form_login:
login_path: artdevelopp_user.login
check_path: artdevelopp_user.login
enable_csrf: true
logout:
path: app_logout
设置路由
在 /config/routes/ 目录中创建一个 artdevelopp_user.yaml 文件,并添加以下代码:
artdevelopp_user:
resource: '@ArtdeveloppUserBundle/Resources/config/routes.yaml'
#Pour la déconnexion
app_logout:
path: /app_logout
name_prefix: app_logout