Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用Symfony 3.1中的登录表单登录_Php_Login_Symfony - Fatal编程技术网

Php 无法使用Symfony 3.1中的登录表单登录

Php 无法使用Symfony 3.1中的登录表单登录,php,login,symfony,Php,Login,Symfony,我一直在按照symfony网站()上的教程为我的symfony 3.1项目添加登录名。它可以与HTTP基本身份验证一起工作,但是当我使用教程here()添加form_登录时,它会一直重定向到登录页面而不登录 这是我的保安。yml: security: providers: in_memory: memory: users: ryan: password: ryanpass

我一直在按照symfony网站()上的教程为我的symfony 3.1项目添加登录名。它可以与HTTP基本身份验证一起工作,但是当我使用教程here()添加form_登录时,它会一直重定向到登录页面而不登录

这是我的保安。yml:

security:
providers:
    in_memory:
        memory:
            users:
                ryan: 
                    password: ryanpass
                    roles: 'ROLE_USER'

                admin:
                    password: kitten
                    roles: 'ROLE_ADMIN'

encoders:
    Symfony\Component\Security\Core\User\User: plaintext

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

    main:
        provider: in_memory
        form_login: 
            login_path: /login
            check_path: /login_check
        logout: ~  
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
保安主任:

class SecurityController extends Controller
{
/**
 * @Route("/login", name="login")
 */
  public function loginAction(Request $request) 
  {

    $authenticationUtils = $this->get('security.authentication_utils');

    // 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 entered by the user
            'last_username' => $lastUsername,
            'error'         => $error,
        )
    );

}

/**
 * @Route("/login_check", name="login_check")
 */
public function loginCheckAction(Request $request) {
    ;
}
login.html.twig:

{% extends 'base.html.twig' %}
{% block body %}
    <div id="login_form">
{% if error %}
    <div>{{ error.messageKey|trans(error.messageData, 'security')  }}</div>
{% endif %}

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

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

        {#
            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" />
        #}

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

{% endblock %}
{%extends'base.html.twig%}
{%block body%}
{%if错误%}
{{error.messageKey | trans(error.messageData,'security')}
{%endif%}
用户名:

密码:

{# 如果要控制用户的URL 成功时重定向到(更多详细信息如下) #} 登录

{%endblock%}
多亏了@Cerad,我将我的编码器部分放在我的提供者之上,并删除了登录的防火墙

安全现在是:

security:
  encoders:
     Symfony\Component\Security\Core\User\User: plaintext
  providers:
     in_memory:
       memory:
          users:
            ryan: 
                password: ryanpass
                roles: 'ROLE_USER'

             admin:
                password: kitten
                roles: 'ROLE_ADMIN'



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

    main:
     form_login: 
        login_path: /login
        check_path: /login_check
     logout: ~  
  access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, roles: ROLE_USER }

登录页面通过访问控制列表而不是防火墙规则是匿名的

教程的流程可能不如它应该的那样流畅。你的防火墙定义搞砸了。看这里:是的,它们看起来确实有点过于复杂和凌乱。看起来像是将编码器放在提供者之上,并删除防火墙部分中的anon for/login