cooolinho/symfony-security-bundle
Composer 安装命令:
composer require cooolinho/symfony-security-bundle
包简介
test reusable bundle
README 文档
README
Setup
Install via composer
composer install cooolinho/symfony-security-bundle
update .env
MAILER_DSN=smtp://user:pass@smtp.example.com:port
update security.yml
add to encoders
security:
encoders:
...
Cooolinho\Bundle\SecurityBundle\Entity\User:
algorithm: auto
use in provider
security:
providers:
...
my_custom_provider:
entity:
class: Cooolinho\Bundle\SecurityBundle\Entity\User
property: email | username
update firewall
security:
firewalls:
...
secured_admin_area:
provider: my_custom_provider
user_checker: Cooolinho\Bundle\SecurityBundle\Security\UserChecker
custom_authenticator:
- Cooolinho\Bundle\SecurityBundle\Security\SecurityAuthenticator
logout:
path: app_logout
target: app_login
add role hierarchy
role_hierarchy:
ROLE_SUPER_ADMIN: [ ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
ROLE_ADMIN: ROLE_USER
add access control
access_control:
- { path: ^/login, roles: PUBLIC_ACCESS }
- { path: ^/logout, roles: PUBLIC_ACCESS }
- { path: ^/admin, roles: ROLE_ADMIN }
add cooolinho_security.yaml to config/packages
cooolinho_security:
route_after_login: # REQUIRED
user_class: # REQUIRED
registration_enabled: false # optional
route_login: app_login # optional
route_logout: app_logout # optional
mailer_from: test@localhost # optional
mailer_name: Localhost Mailbot # optional
login_provider_property: email # optional
ResetPassword Setup
First you have to create two classes: App\Entity\ResetPasswordRequest and App\Repository\ResetPasswordRequestRepository
App\Entity\ResetPasswordRequest
<?php namespace App\Entity; use App\Repository\ResetPasswordRequestRepository; use Doctrine\ORM\Mapping as ORM; use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestInterface; use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestTrait; /** * @ORM\Entity(repositoryClass=ResetPasswordRequestRepository::class) * @ORM\Table(name="users_reset_password_requests") */ class ResetPasswordRequest implements ResetPasswordRequestInterface { use ResetPasswordRequestTrait; /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private ?int $id; /** * @ORM\ManyToOne(targetEntity=User::class) * @ORM\JoinColumn(nullable=false) */ private object $user; public function __construct(object $user, \DateTimeInterface $expiresAt, string $selector, string $hashedToken) { $this->user = $user; $this->initialize($expiresAt, $selector, $hashedToken); } public function getId(): ?int { return $this->id; } public function getUser(): object { return $this->user; } }
App\Repository\ResetPasswordRequestRepository
<?php namespace App\Repository; use App\Entity\ResetPasswordRequest; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestInterface; use SymfonyCasts\Bundle\ResetPassword\Persistence\Repository\ResetPasswordRequestRepositoryTrait; use SymfonyCasts\Bundle\ResetPassword\Persistence\ResetPasswordRequestRepositoryInterface; /** * @method ResetPasswordRequest|null find($id, $lockMode = null, $lockVersion = null) * @method ResetPasswordRequest|null findOneBy(array $criteria, array $orderBy = null) * @method ResetPasswordRequest[] findAll() * @method ResetPasswordRequest[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class ResetPasswordRequestRepository extends ServiceEntityRepository implements ResetPasswordRequestRepositoryInterface { use ResetPasswordRequestRepositoryTrait; public function __construct(ManagerRegistry $registry) { parent::__construct($registry, ResetPasswordRequest::class); } public function createResetPasswordRequest(object $user, \DateTimeInterface $expiresAt, string $selector, string $hashedToken): ResetPasswordRequestInterface { return new ResetPasswordRequest($user, $expiresAt, $selector, $hashedToken); } }
update reset_password.yaml in config/packages
symfonycasts_reset_password:
request_password_repository: App\Repository\ResetPasswordRequestRepository
update config/routes/annotations.yaml
cooolinho_security:
resource: ../../vendor/cooolinho/symfony-security-bundle/src/Controller/
type: annotation
cooolinho/symfony-security-bundle 适用场景与选型建议
cooolinho/symfony-security-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 88 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 03 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 cooolinho/symfony-security-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 cooolinho/symfony-security-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 88
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-2.0-only
- 更新时间: 2021-03-17