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

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

邢杰
2023-03-14

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

这是我的security.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 %}

共有1个答案

阴宏爽
2023-03-14

感谢@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 }

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

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

  • 所以我正在尝试在 Spring 启动和安全的帮助下创建简单的登录页面。所以我目前拥有的是自定义登录页面和一个用户和角色的内存身份验证。问题是,当我输入正确的用户/密码时,spirng没有将其认证为有效数据,并再次将我重定向到登录页面,但这次是: 在客户端,我使用胸腔叶。 表单片段: 配置类: 控制器简单 知道我做错了什么吗?

  • 阅读了一些例子后,我想实现一个爬虫的帮助转移与登录,如: https://target.helpshift.com/login/?next=/admin/issues/ 但是,我得到这个错误: 线程“main”组织中出现异常。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=https://target.helpshift.com/login/

  • 问题内容: 我正在一个springMVC项目中,其中用户身份验证基于Spring安全性。 这个想法是要拥有一个移动(android)应用程序,以便能够将某种数据发送到后端。 因此,在开始开发android之前,我决定使用cURL模拟登录表单的情况。 我们网站上的登录表单如下: 我使用以下命令: 但是我将获得登录页面,换句话说,我无法根据模拟情况通过用户身份验证。 只需注意:对于每一个请求,spri

  • 使用基于表单的JAAS、MySQL、Apache TomEE、JSP、Servlet 我知道如何配置基于表单的JAAS,当用户试图访问安全页面时,自动将用户重定向到登录页面。基本上,我已经为TomEE和MySQL配置了JDBC领域(在文件中),在中,我已经声明了、和。 然后,有以下登录表单: 而且,这对于在web.xml中的标记中声明的页面很好。 但是,我想有明确的访问一个页面,用户可以登录。那么

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