私は、いくつかのバンドルを含むSymfony 3.3 Webアプリケーションを開発しています。symfony 3.3、認証、bcrypt、不正な資格情報
次のように、管理者ユーザーをデータベースに登録する方法を定義しようとしています。私はデータベースにユーザーを作成することができますが、その後、私はそのユーザーとしてログインできません:私はいつも悪い資格情報を取得します。私は物事がより良い方法で整理できることを知っていますが、私が見逃していることを理解したいと思います。
だから私は、AdminBundleを持って、その中に、私はUserクラスを定義しています
<?php
namespace myApp\AdminBundle\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();
}
}
?>
とのRegisterAction
/**
* register main user/admin
*
* @Route("/register/{nameuser}", name="Jus_Admin_register")
* @Method("GET")
* @Template()
*/
public function registerAction($nameuser)
{
$user = new User();
$user->setUsername($nameuser);
$user->setEmail('[email protected]');
$plainPassword = 'pw';
$encoder = $this->get('security.encoder_factory')->getEncoder($user);
$encoded = $encoder->encodePassword($user, $plainPassword);
$user->setPassword($encoded);
$user->setEnabled(TRUE);
$user->setSuperAdmin(TRUE);
$userManager = $this->container->get('fos_user.user_manager');
$userManager->updateUser($user);
return $this->render('myAppAdminBundle:Admin:login.html.twig');
}
私のsecurity.ymlがあります
security:
encoders:
myApp\AdminBundle\Entity\User:
algorithm: bcrypt
cost: 10
iterations: 1
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
our_db_provider:
entity:
class: myApp\AdminBundle\Entity\User
property: username
....
firewalls:
admin_area:
pattern: ^/myApp/Admin
anonymous: ~
form_login:
login_path: /myApp/Admin/login
check_path: /myApp/Admin/login_check
logout:
path: /myApp/Admin/logout
target: /myApp/Admin/admin
http_basic:
realm: "Admin reserved"
context: primary_auth
と私をconfig.ymlは(実際に私は次のものが必要かどうかはわかりません):
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: admin_area
user_class: myApp\AdminBundle\Entity\User\
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
私はhttp://localhost/myApp/Admin/register/admin
を呼び出す場合は、以下のレコードがテーブルfos_userに挿入されています
--
-- Dumping data for table `fos_user`
--
INSERT INTO `fos_user` (`id`, `username`, `username_canonical`, `email`, `email_canonical`, `enabled`, `salt`, `password`, `last_login`, `confirmation_token`, `password_requested_at`, `roles`) VALUES
(1, 'admin', 'admin', '[email protected]', '[email protected]', 1, NULL, '$2y........yq', NULL, NULL, NULL, 'a:1:{i:0;s:16:\"ROLE_SUPER_ADMIN\";}');
はしかし、私は、ログインすることはできませんよ。ログ:
[2017-08- .. ....] security.INFO:認証要求が失敗しました。 {code:0}:悪質な資格情報/..../vendor/symfony/symfony/src/Symfony/Component/Security( "例外": "[オブジェクト](symfony \ Component \ Security \ Core \ Exception \ BadCredentialsException /Core/Authentication/Provider/UserAuthenticationProvider.php:91、Symfony \ Component \ Security \ Core \ Exception \ BadCredentialsException(コード:0):提示されたパスワードは無効です。/...../vendor/symfony/symfony/ SRC/symfonyの/コンポーネント/セキュリティ/コア/認証/プロバイダ/ DaoAuthenticationProvider.php:67) "} []
おかげで、私はあなたの助け
PS感謝しています。 in_memory
セキュリティプロバイダを使用している場合、私のアプリはかなりうまく動作します
:それは2つの引数を受け入れますか? –