当前位置: 首页 > 知识库问答 >
问题:

如何在Symfony 4中创建登录页面而不出现错误“InvalidConfigurationException”?

凤财
2023-03-14

config/packages/security.yaml:

security:
  encoders:
    App\Entity\User:
      algorithm: bcrypt

      # ...

      providers:
        our_db_provider:
          entity:
            class: App\Entity\User
            property: username
            # if you're using multiple entity managers
            # manager_name: customer

            firewalls:
              main:
                anonymous: ~
                form_login:
                  login_path: login
                  check_path: login

                  # ...
                  access_control:
                    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
                    - { path: ^/, roles: ROLE_ADMIN }

src/Controller/SecurityController.php:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;

class SecurityController extends Controller
{
  /**
  * @Route("/login", name="login")
  */
  public function login(Request $request, AuthenticationUtils $authenticationUtils)
  {
      // get the login error if there is one
      $error = $authenticationUtils->getLastAuthenticationError();

      // last username entered by the user
      $lastUsername = $authenticationUtils->getLastUsername();

      return $this->render('security/login.html.twig', array(
          'last_username' => $lastUsername,
          'error'         => $error,
      ));
  }
}

src/Controller/DefaultController.php

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class DefaultController extends Controller
{
    /**
     * @Route("/admin")
     */
    public function admin()
    {
        return new Response('<html><body>Admin page!</body></html>');
    }
}

模板/安全/login.html.twig:

{% extends 'base.html.twig' %}

{% if error %}
    <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}

<form action="{{ path('login') }}" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" />

    <label for="password">Password:</label>
    <input type="password" id="password" name="_password" />

    {#
        If you want to control the URL the user
        is redirected to on success (more details below)
        <input type="hidden" name="_target_path" value="/account" />
    #}

    <button type="submit">login</button>
</form>

我想加载我的 /admin或 /login页面我得到的错误:

InvalidConfigurationExc0019无法识别的选项"security.encoders.应用\实体\用户"下的"提供者"

在ArrayNode-

共有1个答案

易流觞
2023-03-14

你的表格在你的security.yaml配置中是错误的。你有这个:

security:
  encoders:
    App\Entity\User:
      algorithm: bcrypt

      # ...

      providers:

它应该是:

security:
  encoders:
    App\Entity\User:
      algorithm: bcrypt

      # ...

  providers:

编码器提供程序都应该是安全配置下的一级子级。

 类似资料:
  • 我使用JAAS成功地保护了我的web应用程序,为此我遵循了该页面上的教程http://www . the javageek . com/2013/09/18/configure-JAAS-JBoss-7-1-MySQL/ 我想在登录页面上向用户显示一条简洁的错误消息,而不是让他单击某个链接或按回键再次导航到登录页面。这可以做到吗?

  • 我是一个XCode呆子,我到处找答案。这是我第一次在XCode中构建任何东西,我在ViewController.swift中使用Firebase创建了一个登录窗口。一旦用户登录,我希望他们到另一个屏幕,使用MapKit等,我如何自动链接登录窗口成功到第二个页面? 我已经创建了一个新的cocoa touch类文件作为MapViewController.Swift-我只是在登录函数的末尾调用map函数

  • 我正试图创建一些PHP代码与登录表单的网站,如果用户将尝试登录用户名和密码,页面将显示“欢迎…”。当用户试图输入用户名和密码时,显示的网站是空白的,上面什么都没有。另外,我已经用用户名和密码创建了mysql数据库。 我主页上的这个登录表单index.html: 这是我的php页面login.php: 在我的欢迎页面-第1页。html我包含了一些php代码:

  • 我有问题与apache2error.log.500错误没有出现在那里(/var/log/apache2/error.log),我只是得到这些行每次我重新启动apache2服务: 我把error_reporting=E_ALL,display_errors=上,display_startup_errors=上,log_errors=上 /etc/php/7.4/apache2/php.ini和 /e

  • 我试图通过本教程实现简单的登录页面(我使用的是symfony 2.4): http://symfony.com/doc/current/book/security.html 登录页面很好。但当我提交表单时,我出现了以下错误: 我在网上搜索,什么都试过了。我的配置有什么问题? security.yml 路由.yml