divineomega / symfony-password-exposed-bundle
检查密码是否在数据泄露中暴露的Symfony包
1.0.0
2019-06-24 14:52 UTC
Requires
- php: ^7.2
- divineomega/password_exposed: ^3.0
- symfony/config: ^3.4|^4.0
- symfony/contracts: ^1.0
- symfony/dependency-injection: ^3.4|^4.0
- symfony/framework-bundle: ^3.4|^4.0
- symfony/http-kernel: ^3.4|^4.0
- symfony/translation: ^3.4|^4.0
- symfony/validator: ^3.4|^4.0
- symfony/yaml: ^3.4|^4.0
This package is auto-updated.
Last update: 2024-08-25 06:16:57 UTC
README
此包提供了一个检查密码是否在数据泄露中暴露的Symfony包。它通过divineomega/password_exposed
库使用haveibeenpwned.com密码API。
安装
可以使用Composer轻松安装password_exposed
symfony包。只需从项目根目录运行以下命令。
composer require divineomega/symfony-password-exposed-bundle
如果您以前从未使用过Composer依赖关系管理器,请访问Composer网站了解如何开始。
配置
您可以使用一些简单的配置来调整此包
password_exposed: enable: true // optional; for example disable this in dev env http_client: null // optional; a custom http client cache: cache.app // optional; a custom cache cache_lifetime: 2592000 // optional; cache lifetime in seconds request_factory: null // optional; a custom request factory. see psr-7 uri_factory: null // optional; a custom uri factory. see psr-7
使用方法
在控制器中
要检查密码是否在数据泄露中暴露,只需将其传递给isExposed
方法。
以下是一个控制器的基本使用示例
<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use DivineOmega\PasswordExposed\Interfaces\PasswordExposedCheckerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class StandardController extends AbstractController { /** @var PasswordExposedCheckerInterface */ protected $checker; /** * @param PasswordExposedCheckerInterface $checker */ public function __construct(PasswordExposedCheckerInterface $checker) { $this->checker = $checker; } /** * @param Request $request * @return Response */ public function simpleAction(Request $request): Response { $password = $request->get('password'); if($this->checker->isExposed($password)) { // do something // password is exposed } return new Response(); } }
作为表单类型的约束
您还可以使用约束在表单类型中使用password_exposed
检查器。
<?php namespace App\Form\Type; use DivineOmega\PasswordExposed\Symfony\Validator\Constraints\PasswordExposed; use App\Entity\User; use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Form\AbstractType; /** * Class RegisterType */ class RegisterType extends AbstractType { /** * @inheritdoc */ public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('username', TextType::class, [ 'label' => 'Username', 'constraints' => [ new Assert\NotBlank(), ], ]); $builder->add('plainPassword', PasswordType::class, [ 'label' => 'Password', 'constraints' => [ new Assert\NotBlank(), new PasswordExposed(), ], ]); } /** * @inheritdoc */ public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => User::class, ]); } }