使用 Symfony 框架的生产服务器上的用户登录失败(身份验证请求无法处理,因为...)

2022-01-16 00:00:00 authentication php symfony doctrine

我正在将 Symfony 用于一个项目,并且在过去 2 天里我一直试图让登录在生产服务器上工作但没有成功.我不断收到错误

I'm using Symfony for a project and I have been trying to get the login to work on production server with no success for the past 2 days. I keep getting the error

由于系统问题,无法处理身份验证请求.

Authentication request could not be processed due to a system problem.

我已经按照这里的指南(http://symfony.com/doc/current/cookbook/security/entity_provider.html) 来设置从数据库加载用户.

I have followed the guide here (http://symfony.com/doc/current/cookbook/security/entity_provider.html) to setup loading users from database.

我的 security.yml 文件:

security:
encoders:
    SymfonyComponentSecurityCoreUserUser: plaintext
    AcceptmeUserBundleEntityUser: plaintext
role_hierarchy:
    ROLE_SUPER_ADMIN:   [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    in_memory:
        memory:
            users:
                patricia:
                    password: patricia
                    roles: 'ROLE_ADMIN'
    users:
        name: user_provider
        entity: { class: AcceptmeUserBundle:User, property: username }

firewalls:
    user_area:
        pattern: ^/
        anonymous: ~
        provider: user_provider
        form_login:
            login_path: login_route
            check_path: _login_check
            default_target_path: homepage
    dev:
        pattern: ^/(_(profiler|wdt|error)|css|images|js)/
        security: false

    default:
                anonymous: ~
                http_basic: ~

access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }

我的SecurityController.php:

namespace AppBundleController;

use SymfonyComponentHttpFoundationRequest;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use SensioBundleFrameworkExtraBundleConfigurationTemplate;
use SensioBundleFrameworkExtraBundleConfigurationSecurity;
use SymfonyComponentSecurityCoreSecurityContext;

class SecurityController extends Controller
{
/**
 * @Route("/login", name="login_route")
 * @Template("security/login.html.twig")
 */
public function loginAction(Request $request)
{
    if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
        $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
    } else {
        $error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
    }

    return array(
        'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME),
        'error'         => $error,
    );
}

/**
 * @Route("/login_check", name="_login_check")
 */
public function securityCheckAction()
{
    // this controller will not be executed,
    // as the route is handled by the Security system
}
}

我已尝试在 2 个不同的网络主机(FatCow 和 GoDaddy)上上传项目,但问题仍然存在.我在本地使用 PHP 5.4.19(FatCow 使用 5.3.2,GoDaddy 使用 5.4.37).请记住,使用 XAMPP 在 localhost 上工作时一切正常!

I have tried uploading the project on 2 different web hosts (FatCow & GoDaddy) and the problem remains. Locally i am using PHP 5.4.19 (FatCow uses 5.3.2 and GoDaddy uses 5.4.37). Keep in mind that when working on localhost with XAMPP everything works fine!

我已确认在这两种情况下都启用了 PDO.我已确认 parameters.yml 文件中的数据库用户名、密码和主机是正确的.本地和远程服务器上的错误日志均未显示任何内容.

I've confirmed that PDO is enabled in both cases. I've confirmed that the database username, password and host are correct in the parameters.yml file. Error logs on both local and remote servers show nothing.

我已遵循上一篇文章中的所有指示部署 Symfony2 应用程序出现 fosuserbundle 错误 仍然没有成功.

I have followed all directions from this previous post Deploying Symfony2 app getting fosuserbundle errors and still no success.

推荐答案

更新:问题已解决.问题是实体 php 文件中的表以大写字母命名,而数据库表以小写字母命名.+1 到 ClémentBERTILLON 指向正确的方向,即 prod.log

UPDATE: Issue solved. The issue was that a table in the entity php file was named with upper case letters while the database table was named with lower case. +1 to ClémentBERTILLON for pointing in the right direction, namely prod.log

相关文章