在链配置的命名空间中找不到类“App\Entity\Users”

2024-06-25

我想使用 Symfony 4 添加身份验证系统。我正在使用 Mssql 数据库,该数据库已创建并填充。

这不是第一次,我正在使用它。但这是我第一次遇到问题。

我从数据库导入了所有实体,尤其是Users Entity.

我也配置了LoginFormAuthenticator.php, 和我的security.yml

Users.php内容:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * Users
 *
 * @ORM\Table(name="USERS")
 * @ORM\Entity(repositoryClass=UsersRepository::class)
 */
class Users implements UserInterface
{
    /**
     * @var int
     *
     * @ORM\Column(name="US_ID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $usId;

    /**
     * @var string|null
     *
     * @ORM\Column(name="US_PRENOM", type="string", length=50, nullable=true)
     */
    private $usPrenom;

    /**
     * @var string|null
     *
     * @ORM\Column(name="US_NOM", type="string", length=50, nullable=true)
     */
    private $usNom;

    /**
     * @var string|null
     *
     * @ORM\Column(name="US_MAIL", type="string", length=100, nullable=true)
     */
    private $usMail;

    /**
     * @var string|null
     *
     * @ORM\Column(name="US_PASS", type="string", length=50, nullable=true)
     */
    private $usPass;

    /**
     * @var int|null
     *
     * @ORM\Column(name="US_NIVEAU", type="integer", nullable=true)
     */
    private $usNiveau;

    /**
     * @var \DateTime|null
     *
     * @ORM\Column(name="INS_DATE", type="datetime", nullable=true)
     */
    private $insDate;

    /**
     * @var string|null
     *
     * @ORM\Column(name="INS_USER", type="string", length=100, nullable=true)
     */
    private $insUser;

    /**
     * @var \DateTime|null
     *
     * @ORM\Column(name="MAJ_DATE", type="datetime", nullable=true)
     */
    private $majDate;

    /**
     * @var string|null
     *
     * @ORM\Column(name="MAJ_USER", type="string", length=100, nullable=true)
     */
    private $majUser;

    /**
     * @return int
     */
    public function getUsId(): int
    {
        return $this->usId;
    }

    /**
     * @param int $usId
     */
    public function setUsId(int $usId): void
    {
        $this->usId = $usId;
    }

    /**
     * @return string|null
     */
    public function getUsPrenom(): ?string
    {
        return $this->usPrenom;
    }

    /**
     * @param string|null $usPrenom
     */
    public function setUsPrenom(?string $usPrenom): void
    {
        $this->usPrenom = $usPrenom;
    }

    /**
     * @return string|null
     */
    public function getUsNom(): ?string
    {
        return $this->usNom;
    }

    /**
     * @param string|null $usNom
     */
    public function setUsNom(?string $usNom): void
    {
        $this->usNom = $usNom;
    }

    /**
     * @return string|null
     */
    public function getUsMail(): ?string
    {
        return $this->usMail;
    }

    /**
     * @param string|null $usMail
     */
    public function setUsMail(?string $usMail): void
    {
        $this->usMail = $usMail;
    }

    /**
     * @return string|null
     */
    public function getUsPass(): ?string
    {
        return $this->usPass;
    }

    /**
     * @param string|null $usPass
     */
    public function setUsPass(?string $usPass): void
    {
        $this->usPass = $usPass;
    }

    /**
     * @return int|null
     */
    public function getUsNiveau(): ?int
    {
        return $this->usNiveau;
    }

    /**
     * @param int|null $usNiveau
     */
    public function setUsNiveau(?int $usNiveau): void
    {
        $this->usNiveau = $usNiveau;
    }

    /**
     * @return \DateTime|null
     */
    public function getInsDate(): ?\DateTime
    {
        return $this->insDate;
    }

    /**
     * @param \DateTime|null $insDate
     */
    public function setInsDate(?\DateTime $insDate): void
    {
        $this->insDate = $insDate;
    }

    /**
     * @return string|null
     */
    public function getInsUser(): ?string
    {
        return $this->insUser;
    }

    /**
     * @param string|null $insUser
     */
    public function setInsUser(?string $insUser): void
    {
        $this->insUser = $insUser;
    }

    /**
     * @return \DateTime|null
     */
    public function getMajDate(): ?\DateTime
    {
        return $this->majDate;
    }

    /**
     * @param \DateTime|null $majDate
     */
    public function setMajDate(?\DateTime $majDate): void
    {
        $this->majDate = $majDate;
    }

    /**
     * @return string|null
     */
    public function getMajUser(): ?string
    {
        return $this->majUser;
    }

    /**
     * @param string|null $majUser
     */
    public function setMajUser(?string $majUser): void
    {
        $this->majUser = $majUser;
    }

    /**
     * Returns the roles granted to the user.
     *
     *     public function getRoles()
     *     {
     *         return ['ROLE_USER'];
     *     }
     *
     * Alternatively, the roles might be stored on a ``roles`` property,
     * and populated in any number of different ways when the user object
     * is created.
     *
     * @return (Role|string)[] The user roles
     */
    public function getRoles()
    {
        return ['ROLE_USER'];
    }

    /**
     * Returns the password used to authenticate the user.
     *
     * This should be the encoded password. On authentication, a plain-text
     * password will be salted, encoded, and then compared to this value.
     *
     * @return string The password
     */
    public function getPassword()
    {
        return $this->getUsPass();
    }

    /**
     * Returns the salt that was originally used to encode the password.
     *
     * This can return null if the password was not encoded using a salt.
     *
     * @return string|null The salt
     */
    public function getSalt()
    {
        // TODO: Implement getSalt() method.
    }

    /**
     * Returns the username used to authenticate the user.
     *
     * @return string The username
     */
    public function getUsername()
    {

        return $this->getUsMail();
    }

    /**
     * Removes sensitive data from the user.
     *
     * This is important if, at any given point, sensitive information like
     * the plain-text password is stored on this object.
     */
    public function eraseCredentials()
    {
        // TODO: Implement eraseCredentials() method.
    }
}

LoginFormAuthenticator.php内容:

<?php

namespace App\Security;

use App\Entity\Users;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator;
use Symfony\Component\Security\Http\Util\TargetPathTrait;

class LoginFormAuthenticator extends AbstractFormLoginAuthenticator
{
    use TargetPathTrait;

    private $urlGenerator;
    private $csrfTokenManager;
    private $passwordEncoder;
    private $entityManager;

    public function __construct(EntityManagerInterface $entityManager,UrlGeneratorInterface $urlGenerator, CsrfTokenManagerInterface $csrfTokenManager, UserPasswordEncoderInterface $passwordEncoder)
    {
        $this->urlGenerator = $urlGenerator;
        $this->csrfTokenManager = $csrfTokenManager;
        $this->passwordEncoder = $passwordEncoder;
        $this->entityManager = $entityManager;

    }

    public function supports(Request $request)
    {
        return 'app_login' === $request->attributes->get('_route')
            && $request->isMethod('POST');
    }

    public function getCredentials(Request $request)
    {
        $credentials = [
            'usMail' => $request->request->get('usMail'),
            'password' => $request->request->get('password'),
            'csrf_token' => $request->request->get('_csrf_token'),
        ];
        $request->getSession()->set(
            Security::LAST_USERNAME,
            $credentials['usMail']
        );

        return $credentials;
    }

    public function getUser($credentials, UserProviderInterface $userProvider )
    {
        $token = new CsrfToken('authenticate', $credentials['csrf_token']);
        if (!$this->csrfTokenManager->isTokenValid($token)) {
            throw new InvalidCsrfTokenException();
        }

        // Load / create our user however you need.
        // You can do this by calling the user provider, or with custom logic here.
        $user = $this->entityManager->getRepository(Users::class)->findOneBy(['usMail' => $credentials['usMail']]);


        if (!$user) {
            // fail authentication with a custom error
            throw new CustomUserMessageAuthenticationException('UsMail could not be found.');
        }

        return $user;
    }

    public function checkCredentials($credentials, UserInterface $user)
    {
        return $this->passwordEncoder->isPasswordValid($user, $credentials['password']);
    }

    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
            return new RedirectResponse($targetPath);
        }

        return new RedirectResponse($this->urlGenerator->generate('home'));
    }

    protected function getLoginUrl()
    {
        return $this->urlGenerator->generate('login');
    }
}

Security.yml内容:

security:
    encoders:
        App\Entity\Users:
            algorithm:            plaintext
            ignore_case:          false

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        users:
            entity:
                # the class of the entity that represents users
                class: 'App\Entity\Users'
                # the property to query by - e.g. username, email, etc
                property: 'usMail'
                # optional: if you're using multiple Doctrine entity
                # managers, this option defines which one to use
                # manager_name: 'customer'

    firewalls:
        main:
            pattern: ^/
            logout:
                invalidate_session: true
                path: /logout
                target: /login
            anonymous:    true
            guard:
                authenticators:
                    - App\Security\LoginFormAuthenticator

当我尝试登录时出现异常

The class 'App\Entity\Users' was not found in the chain configured namespaces

命名空间的目录存在问题。

如果您使用多EntityManager你必须配置你的doctrine.yaml像这样:

doctrine:
dbal:
    default_connection:
    connections:

orm:
    auto_generate_proxy_classes: '%kernel.debug%'
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
        App:
            is_bundle: false
            type: annotation
            dir: '%kernel.project_dir%/src/Entity'
            prefix: 'App\Entity'
            alias: App
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在链配置的命名空间中找不到类“App\Entity\Users” 的相关文章

  • 如何在 Mac v 10.7.2 上安装/使用 php

    我是对使用 PHP 感兴趣的普通大学生 谁能告诉我 101 如何使用简单明了的语言在 mac 版本 10 7 2 上安装 启用它 我将感谢任何和所有的帮助 Cheers 无需安装 PHP 或 Apache 它们已随 Mac 10 7 一起提
  • 无限滚动启用(wordpress)

    因此 我发现本教程可以启用无限滚动 http wptheming com 2012 03 infinite scroll to wordpress theme http wptheming com 2012 03 infinite scro
  • 如何在 PHP 中按字母顺序比较 2 个字符串?

    标题说什么 具体来说 如果我有 array1 name zoo array2 name fox 我怎样才能确定按字母顺序排列 array2的名字应该出现在上面 array1 s Use strcmp http www php net str
  • 在 php 文件上调用 exec 并传递参数?

    我想使用调用 php 文件exec http nz php net manual en function exec php 当我调用它时 我希望能够通过 id 传递变量 我可以打电话echo exec php var www unity s
  • IOS 向特定用户推送通知?

    是否可以向特定设备发送 iOS 推送通知 我构建了一个论坛类型的应用程序 用户可以创建问题 其他人可以回答它 我需要向提出问题的特定用户发送 iOS 推送通知 通知他们问题已得到解答 这可以通过 PHP 或其他方法来完成吗 是的 您绝对可以
  • WordPress、PHP、URL 编码问题

    Wordpress 提供了一个名为 the permalink 的函数 您猜对了 在帖子循环中返回给定帖子的永久链接 我正在尝试对该永久链接进行 URL 编码 当我执行此代码时 它以 HTML 形式生成以下结果 http
  • 检查 Laravel 模型是否已保存或查询是否已执行

    我见过很多人使用这种方式来检查 Laravel 模型是否已保存 所以现在我想知道这是否是一种安全的方法 我还可以检查下面的查询是否像这样执行 检查模型是否已保存 Eg myModel new User myModel gt firstnam
  • 如果我有循环引用,我可以触发 PHP 垃圾回收自动发生吗?

    我似乎记得一种设置方法 destruct对于一个类 以这样的方式确保一旦外部对象超出范围 循环引用就会被清除 然而 我构建的简单测试似乎表明这并不像我预期 希望的那样 有没有一种方法可以设置我的类 以便当最外面的对象超出范围时 PHP 可以
  • 防止我的 PHP 网络爬虫停止运行

    我正在使用 PHPCrawl 类并添加了一些 DOMDocument 和 DOMXpath 代码来从网页中获取特定数据 但是脚本在接近爬行整个网站之前就停止了 我已将 set time limit 设置为 100000000 因此这不应该成
  • php imagecopyresampled 添加黑色背景

    我有一个调整图像大小的脚本 它采用 130x81 图像并将其添加到 130x130 图像中 当 imagecopyresampled 函数运行时 它会在剩余的空间中添加黑色背景 即使基本图像是白色的 下面的代码 我真的很感激一些帮助 The
  • Monolog - 仅记录特定级别的错误

    我在普通 PHP 应用程序中使用 Monolog 我只想记录特定级别的错误 INFO 和不高于 因为我还有其他处理程序 这是我的代码
  • 仅限使用一张优惠券,删除 Woocommerce 中之前使用的其他优惠券

    我正在动态制作优惠券以使用用户电子邮件作为优惠券 但如何限制用户每个购物车仅使用一张优惠券 如果使用多个自动从购物车中删除前一个 add filter woocommerce get shop coupon data generate co
  • YouTube api 的永久访问令牌?

    我已经浏览了用于身份验证的 Oauth 和 AuthSub 方法的 google 文档 并且我尝试通过 google 搜索此内容 但没有结果 对于 Facebook 您可以请求长度为 的访问令牌lifetime 这意味着您不必每隔几周就请求
  • 如何在 Linux 上的 php 中启用 --enable-soap?

    这就是问题所在 我在 Apache 上安装了 PHP 5 2 9 但无法升级 PHP 有没有办法在 PHP 5 2 9 中启用 SOAP PHP 手册中说 要启用 SOAP 支持 请使用 enable soap 配置 PHP 这根本没有帮助
  • 如何使用ajax post请求将模态值插入数据库?

    查看代码 div class price div
  • PHP 中的延迟加载类方法

    我有一堂课 里面有一些相当大的方法 在它的基本和最常见的状态下 大多数功能并不是必需的 所以我想知道是否有一种方法可以延迟加载类的一部分 这些方法需要能够访问私有 受保护的成员 因此如果这些方法是类的本机方法 那将是理想的选择 但是在寻找其
  • file_get_contents:即使出现错误也能获得完整响应

    是否有可能使file get contents即使发生错误也显示实际响应 否则很难调试 例如 假设您有以下代码 url https api twitter com oauth request token data array options
  • 如何使用 Amazon S3 SDK 更新元数据

    我正在使用 Amazon 的 AWS SDK 的 PHP 版本 我有一堆带有Expires标头 我想删除该标头并添加一个Cache control标题代替 这更新对象 http docs amazonwebservices com AWSS
  • 特殊字符和 URL 重写

    我目前正在开发一个应用程序 该应用程序从暴雪社区 API 中提取 JSON 数据并使用 PHP 对其进行解析 一切正常 直到我遇到一个名字中有特殊字符的角色 为了提取角色数据 我需要知道他们的角色名称和他们所在的领域 我将名称和领域通过 U
  • simplexml,返回具有相同标签的多个项目

    我将以下 XML 文件加载到 php simplexml 中

随机推荐