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

Symfony 3登录表单无限循环

孔安阳
2023-03-14

我的Symfony版本是:3.0.6

我从几个小时与认证战斗。我有登录表格

我的security.yml看起来:

security:

encoders:
    MainListBundle\Entity\User:
        algorithm: bcrypt

providers:
    default:
        entity:
            class: MainListBundle:User
            property: username

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    my_app:
        pattern:   ^/
        anonymous: ~
        form_login:
            login_path: /login
            check_path: /login_check
            default_target_path: main_list_homepage
        logout:
            path: /logout
            target: main_list_login

若数据库中不存在用户名,表单可以显示给我。但如果我输入了一些密码(也错了),我在“check_path”URL上有无限循环。

登录表单上的字段正确:\用户名和\密码。表单“action”与安全中的“check_path”相同。

我做错了什么...这是非常奇怪的,因为所有是像在教程。

控制器:

<?php

namespace MainListBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;

class LoginController extends Controller
{

    public function indexAction(Request $Request)
    {
        $auth = $this->get('security.authentication_utils');
        $error = $auth->getLastAuthenticationError();
        $username = $auth->getLastUserName();

        return $this->render('MainListBundle:Login:login.html.twig', array(
            'loginError' => $error,
            'username' => $username
        ));
    }

路由.yml

main_list_sort:
    path:     /MainList/sort/{field}
    defaults: { _controller: MainListBundle:Default:sort }

main_list_search:
    path:     /MainList/search
    defaults: { _controller: MainListBundle:Default:search }

main_list_clear_search:
    path:     /MainList/clearSearch
    defaults: { _controller: MainListBundle:Default:clearSearch }

main_list_pdfGenerateRecordsList:
    path:     /MainList/pdfGenerateRecordsList
    defaults: { _controller: MainListBundle:Default:pdfGenerateRecordsList }

main_list_homepage:
    path:     /MainList/{page}
    defaults: { _controller: MainListBundle:Default:index, page: 1 }

main_list_login:
    path:     /login
    defaults: { _controller: MainListBundle:Login:index }

main_list_login_check:
    path:     /login_check

main_list_logout:
    path:     /logout
    defaults: { _controller: MainListBundle:Login:logout }

main_list_add_users:
    path:     /addusers
    defaults: { _controller: MainListBundle:Login:addUsers }

表单视图:

{% extends "::base.html.twig" %}

{% block menu %}{% endblock %}

{% block content %}

    <center>
        {% if loginError is defined and loginError is not null %}
            <div class="alert alert-danger">{{ loginError.messageKey }}</div>
        {% endif %}

        <form action="{{ path('main_list_login_check') }}" method="POST">
            <table style="width: 600px">
                <tr>
                    <td>Login:</td>
                    <td>
                        <input type="text" name="_username" value="{{ username }}"/>
                    </td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td>
                        <input type="password" name="_password" value=""/>
                    </td>
                </tr>

                <tr>
                    <td></td>
                    <td>
                        <input type="submit" value="Zaloguj"/>
                    </td>
                </tr>
            </table>
        </form>
    </center>

{% endblock %}

共有1个答案

楚德辉
2023-03-14

正如Symphony留档所说:

您应该将下一条规则添加到访问\u控件中

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

并且不要忘记在你的security.yml中的form_loginaccess_control之前添加匿名:~

查看文档以了解更多信息。

 类似资料:
  • 我目前正在创建一个Symfony3应用程序,我无法使我的登录表单工作;我遵循以下步骤: http://symfony.com/doc/current/cookbook/security/form_login_setup.html http://symfony.com/doc/current/cookbook/doctrine/registration_form.html 注册系统正在工作,但我无法

  • 我尝试使用这个简单的代码登录,但在我点击登录按钮后,else选项“无效用户名或密码!”总是出现,即使用户名和密码是匹配的 控制器:

  • 我正在使用Sentinel-https://github.com/rydurham/Sentinel-来处理我的应用程序的用户身份验证,并将整个'admin'子域routes.php这样包装: 在本地机器上,一切正常-应用程序。领域如果登录,dev将显示管理仪表板,如果未登录,则显示登录页面,而注销会将用户返回到登录页面。 但是,一旦通过Forge部署,应用程序将不再可用。领域如果未登录,dev将

  • 我正在用我的java书复习数据结构,我需要重新创建一个循环链表。我对这个无限循环的链表有问题,弄不清楚为什么。我可以将值插入到列表中,但是打印和删除这些值似乎会无限循环最初插入的值。我如何更改我的List类以避免无限循环? CircularList.Class 链接类

  • 我一直在关注symfony网站上的教程(http://symfony.com/doc/current/security.html)为我的Symfony 3.1项目添加登录名。它可以与HTTP基本身份验证一起工作,但是当我使用这里的教程添加form_登录时(http://symfony.com/doc/current/security/form_login_setup.html)它会一直重定向到登录

  • 我是Symfony的新手,我正在尝试为我的应用程序创建一个access登录表单,但当我尝试登录时,它只会一次又一次地将我重定向到表单登录。在此之前,我使用了HTTP基本表单,它工作得很好,但现在我尝试使用登录表单,这是不可能的。 这是我的代码: 用户类(带教义): 安全Controller.php: Security.yml login.html.twig 有什么想法吗?谢谢