Symfony Silex:安全身份验证系统尝试运行';登录检查';路线

Symfony Silex:安全身份验证系统尝试运行';登录检查';路线,symfony,security,authentication,login,silex,Symfony,Security,Authentication,Login,Silex,我正在尝试在Silex中配置身份验证系统。但是,会弹出以下错误: 当然,我一直在互联网上寻找解决方案。但是每个话题都说“登录检查”应该在防火墙后面。因此,它被放置在/Users/区域中 我试图进入保护区。但是,防火墙可以工作,因为我被重定向回登录页面。我使用下面几行代码来获得我想要的 注册部分: $app->register(new Silex\Provider\SecurityServiceProvider(), array( 'security.firewalls' =>

我正在尝试在Silex中配置身份验证系统。但是,会弹出以下错误:

当然,我一直在互联网上寻找解决方案。但是每个话题都说“登录检查”应该在防火墙后面。因此,它被放置在/Users/区域中

我试图进入保护区。但是,防火墙可以工作,因为我被重定向回登录页面。我使用下面几行代码来获得我想要的

注册部分:

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
        'login_path' => array(
            'pattern' => '^/Security/login$',
            'anonymous' => true
        ),
        'default' => array(
            'pattern' => '^/Security/User/.*$',
            'anonymous' => true,
            'form' => array(
                'login_path' => '/Security/login',
                'check_path' => '/Security/User/login_check',
            ),
            'logout' => array(
                'logout_path' => '/Security/User/logout',
                'invalidate_session' => false
            ),
            'users' => function($app) { 
                return new User\UserProvider($app['db']); 
            },
        )
    ),
    'security.access_rules' => array(
        array('^/Security/login$', 'IS_AUTHENTICATED_ANONYMOUSLY'),
        array('^/Security/User/.+$', 'ROLE_USER')
    )
));
登录路径:

$routes->match('/login', function(Request $request) use ($app) {
    return $app['twig']->render('form.html.twig', array(
        'error' => $app['security.last_error']($request),
        'last_username' => $app['session']->get('_security.last_username'),
    ));
})->bind('login');

$routes->match('/User/page', function () use ($app) {
    return $app['twig']->render('index.html.twig', array());
})->bind('user.page');
Form.html.twig:

{% extends "layout.html.twig" %}

{% block content %}
    {% if is_granted('ROLE_USER') %}
        <p>Welcome {{ app.security.token.user.username }}!</p>
        <p><a href="{{ path('/User/logout') }}">Log out</a></p>
    {% else %}
        <form action="{{ path('/User/login_check') }}" method="post">
            <p><label for="username">Username: </label><input id="username" type="text" name="_username" value="{{ last_username }}"></p>
            <p><label for="password">Password: </label><input id="password" type="password" name="_password"></p>
            <p><input type="submit" value="Log in"></p>
            {% if error %}
                <div class="error">{{ error }}</div>
            {% endif %}
        </form>
    {% endif %}
{% endblock %}
{%extends“layout.html.twig”%}
{%block content%}
{%if_被授予('ROLE_USER')%}
欢迎{{app.security.token.user.username}}

{%else%} 用户名:

密码:

{%if错误%} {{error}} {%endif%} {%endif%} {%endblock%}

谁能告诉我为什么系统仍然尝试执行登录检查路由?它应该由Silex处理。并且它位于保护区。

函数
path
接受路由名称作为参数,而不是url。安全提供程序为路径
检查路径
注销路径
制作假路由。它们的名称取决于路径,路由名称是将所有出现的
/
替换为
.
的路径

因此,对于您的情况,
check\u path
路由名称是
Security\u User\u login\u check
logout\u路径
路由名称是
Security\u User\u logout


修复
path
调用
{{path('Security\u User\u login\u check')}
{path('Security\u User\u logout')}}

,它们完成了任务!