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

Symfony2表单登录提供程序in_memory,登录失败

弘靖琪
2023-03-14

这是我的配置:

security:

providers:
    in_memory:
        memory:
            users:
                user:
                    password: user
                    roles: 'ROLE_USER'
                admin:
                    password: admin
                    roles: 'ROLE_ADMIN'

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

    secured_area:
        anonymous: ~
        access_denied_url: backoffice_access_denied

        form_login:
            login_path: /backoffice/login
            check_path: /backoffice/login_check

        logout:
            path:   /backoffice/logout
            target: /backoffice

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

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

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

backoffice_login_check:
    path: /backoffice/login_check

显然,我有一个路由/后台/登录的控制器,它使用正确的输入名(_username,_password)呈现登录表单。

当我编译表单时,如果我输入了错误的用户名和密码数据,我就会正确地出现错误的凭据,但是如果我输入了正确的数据,我就会以匿名用户的身份被重定向回登录页面。

一些应用程序/日志。。。

[2016-03-02 10:39:54] request.INFO: Matched route "backoffice_login_check". {"route_parameters":{"_route":"backoffice_login_check"},"request_uri":"http://DOMAIN/backoffice/login_check"} []
[2016-03-02 10:39:54] security.INFO: User has been authenticated successfully. {"username":"admin"} []
[2016-03-02 10:39:54] event.DEBUG: Listener "Symfony\Component\Security\Http\Firewall::onKernelRequest" stopped propagation of the event "kernel.request". [] []
[2016-03-02 10:39:54] event.DEBUG: Listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest" was not called for event "kernel.request". [] []
[2016-03-02 10:39:54] security.DEBUG: Stored the security token in the session. {"key":"_security_secured_area"} []
[2016-03-02 10:39:54] request.INFO: Matched route "backoffice_index_lead". {"route_parameters":{"_controller":"XXX\\AppBundle\\Controller\\DefaultController::leadAction","_route":"backoffice_index_lead"},"request_uri":"http://DOMAIN/backoffice/lead"} []
[2016-03-02 10:39:54] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
[2016-03-02 10:39:54] security.DEBUG: Access denied, the user is not fully authenticated; redirecting to authentication entry point. {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\AccessDeniedException(code: 403): Access Denied. at /site/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php:70)"} []
[2016-03-02 10:39:54] security.DEBUG: Calling Authentication entry point. [] []

如何在第2行看到登录成功,但当控制器重定向到安全的我获得访问拒绝(第8行)

我错在哪里?非常感谢。

这是我的config.yml

framework:
    #esi:             ~
    #translator:      { fallbacks: ["%locale%"] }
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    #serializer:      { enable_annotations: true }
    templating:
        engines: ['twig']
        packages:
            v_assets:
                version: %app.assets_version%
                version_format:  "assets/%%2$s/%%1$s"
    default_locale:  "%locale%"
    trusted_hosts:   ~
    trusted_proxies: ~
    session:
        handler_id:  ~
    fragments:       ~
    http_method_override: true

我的symfony项目运行在NGNIX/hvm上。

共有2个答案

巫新知
2023-03-14

尝试添加更改会话选项:

session: ~

致:

session:
   handler_id:  ~
法和安
2023-03-14

扔到HHVM桶和安装php!

 类似资料:
  • 问题内容: 我有一个示例,尝试使用Symfony2和FOSUserBundle创建AJAX登录。我设置我自己和在我的文件。 这是课程: 这对于处理成功和失败的AJAX登录尝试都非常有用。但是,启用后-我无法通过标准表单POST方法(非AJAX)登录。我收到以下错误: 我希望自己的重写和重写仅对XmlHttpRequests(AJAX请求)执行,如果没有,则将执行交还给原始处理程序。 有没有办法做到

  • 我正在尝试创建一个自定义的KeyClope提供程序,它将为登录逻辑添加一些内容。我已经读过如何为KeyClope创建提供者(或插件),我正在与之合作的项目中已经有一个提供者(或插件),但我对它们知之甚少。 我需要为用户身份验证/授权添加自定义逻辑:我希望能够检查内部数据库中的一些字段来验证人员帐户。但是我没有找到任何关于类似情况的指南或好文章。有人能给我提供一些关于从什么开始的链接吗?为了实现这样

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

  • 我想限制登录用户的登录路径, security.yml 我的登录功能: 问题是它可以工作,例如,对于/admin,只有ROLE\u admin有访问权限,ROLE\u用户号。但是/login,如果我登录或不登录,我可以访问它,在symfony2开发工具中,我看到我是匿名的,我登录了stel。。。我没有主意

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

  • 我已经创建了身份提供程序,并且从浏览器中它工作正常。 参考:密钥斗篷身份提供程序后代理登录抛出错误 从浏览器,我可以使用外部IDP登录,如果外部IDP用户不在keycloak中,它会在keyclock中创建,这绝对没问题,并重定向到仪表板。 但我的问题是,我们如何用keycloak rest api实现这个流程? 是否有任何api用于使用外部IDP登录,并将获得外部IDP的令牌以及密钥斗篷的令牌?