我的登录表单没有';我不在Symfony 2工作

我的登录表单没有';我不在Symfony 2工作,symfony,Symfony,我正在处理我的公文包,我正在尝试添加一个表单供我登录使用我的CMS。我用的是symfony2。这是我在遇到问题之前采取的步骤(我将在后面解释) 首先,我阅读了Symfony网站()上关于安全性的文档。在这一点上,它起作用了,如果我试图访问任何前面有admin/的url,它会问我一个usename和密码。我输入的用户名和密码是加密的。到目前为止,一切都很顺利 以下是我目前的配置: 我的应用程序的路由器: public: resource: "@PublicBundle/Resou

我正在处理我的公文包,我正在尝试添加一个表单供我登录使用我的CMS。我用的是symfony2。这是我在遇到问题之前采取的步骤(我将在后面解释)

首先,我阅读了Symfony网站()上关于安全性的文档。在这一点上,它起作用了,如果我试图访问任何前面有admin/的url,它会问我一个usename和密码。我输入的用户名和密码是加密的。到目前为止,一切都很顺利

以下是我目前的配置:

我的应用程序的路由器:

public:
    resource: "@PublicBundle/Resources/config/routing.yml"
    prefix:   /

admin:
    resource: "@AdminBundle/Resources/config/routing.yml"
    prefix:   /admin

app:
    resource: "@AppBundle/Controller/"
    type:     annotation
我的管理包的路由器:

admin:
    path:     /
    defaults: { _controller: AdminBundle:Admin:index }

chemin_test:
    path:     /test
    defaults: { _controller: AdminBundle:Admin:test }
admin:
    path:     /
    defaults: { _controller: AdminBundle:Securite:login }

admin_login_check:
    path:     /login_check
    defaults: { _controller: AdminBundle:Securite:loginCheck }

chemin_test:
    path:     /test
    defaults: { _controller: AdminBundle:Admin:test }
我的security.ynk文件:

security:
    providers:
        in_memory:
            memory:
                users:
                    admin:
                        password: XXXXXXXXXXXXXXXXXXXX
                        roles: 'ROLE_ADMIN'

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

        default:
            anonymous: ~
            http_basic: ~

    encoders:
        Symfony\Component\Security\Core\User\User: 
            algorithm: bcrypt
            cost: 12

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
现在是它不起作用的部分。我读书。以下是更改的文件:

Security.yml:

security:
    providers:
        in_memory:
            memory:
                users:
                    admin:
                        password: XXXXXXXXXXXXXXXXX
                        roles: 'ROLE_ADMIN'

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

        default:
            anonymous: ~
            http_basic: ~
            form_login:
                login_path: /admin/
                check_path: /admin/login_check

    encoders:
        Symfony\Component\Security\Core\User\User: 
            algorithm: bcrypt
            cost: 12

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
我的管理包的路由器:

admin:
    path:     /
    defaults: { _controller: AdminBundle:Admin:index }

chemin_test:
    path:     /test
    defaults: { _controller: AdminBundle:Admin:test }
admin:
    path:     /
    defaults: { _controller: AdminBundle:Securite:login }

admin_login_check:
    path:     /login_check
    defaults: { _controller: AdminBundle:Securite:loginCheck }

chemin_test:
    path:     /test
    defaults: { _controller: AdminBundle:Admin:test }
我的管理员和安全管理员:

管理员:

<?php

namespace AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class AdminController extends Controller
{
    public function indexAction()
    {
       return new Response('<html><body>Hello!</body></html>');
    }

    public function testAction()
    {
       return new Response('<html><body>Hello!</body></html>');
    }
}

我相信你的问题在这里:

    default:
        anonymous: ~
        http_basic: ~
        form_login:
            login_path: /admin/
            check_path: /admin/login_check
登录和登录检查路径不应在admin下,因为只有登录的用户才能进入/admin下的页面。。。 因此,发生的情况是,您尝试转到/admin页面,它将永远加载尝试转到/admin/login,但他是不允许的,因为用户未登录并继续尝试。。直到他抛出错误,认为这是一个无限循环

为login path指定您拥有的登录路径,并检查\u path login\u check

    default:
        anonymous: ~
        http_basic: ~
        form_login:
            login_path: login_route
            check_path: login_check

我尝试了您的解决方案,并将我的路由名称更改为:login\u route:path:/defaults:{{u controller:AdminBundle:Securite:login}login\u check:path:/login\u check defaults:{{u controller:AdminBundle:Securite:loginCheck}我无法工作,它仍然给我同样的问题可能你的routing.yml在/admin下进行登录路径和登录检查?我找到了解决方案。就像你说的,我的登录路径和登录检查都在/admin之后,所以ot一直在重定向,因为我告诉安全字段如果他找到admin/就重定向。解决方案就是让login和login\u检查不在admin/之后。在我的例子中,我决定只为securityController和登录表单创建一个connexion包。谢谢你的帮助,是你的提示让我真正理解了我的问题!