小编Rmy*_*my5的帖子

在 Symfony 4 中验证登录表单后,没有错误且会话中没有用户

我正在尝试在 Symfony 4 中制作一个简单的登录表单(遵循本文档: https: //symfony.com/doc/current/security/form_login_setup.html)。

我在数据库中有一个用户。如果我在登录表单中输入错误的凭据,我会收到错误的凭据错误消息。但是,如果我输入正确的凭据,我会被重定向到主页(默认行为),但没有启动任何会话,用户不在会话中。

这是我正在使用的 SecurityController:

<?php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;

class SecurityController extends Controller
{
    /**
     * @Route("/login", name="login")
     */
    public function login(Request $request, AuthenticationUtils $authenticationUtils)
    {
        $error = $authenticationUtils->getLastAuthenticationError();

        $lastUsername = $authenticationUtils->getLastUsername();

        return $this->render('security/login.html.twig', array(
            'last_username' => $lastUsername,
            'error'         => $error,
        ));
    }
}
Run Code Online (Sandbox Code Playgroud)

security.yaml 文件:

security:
encoders:
    App\Entity\user:
        algorithm: bcrypt

providers:
    in_memory: { memory: ~ }
    quimly_db_provider:
        entity:
            class: App\Entity\User
            property: username

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: …
Run Code Online (Sandbox Code Playgroud)

symfony symfony4

1
推荐指数
1
解决办法
2792
查看次数

有没有办法防止 Symfony 4 中控制器方法的多次执行?

我有一项服务,可以通过自定义命令和 HTML 页面使用。我想防止并行多次执行该服务。对于该命令,有一个 Lock 组件来执行此操作。但是控制器方法是否可以实现同样的目标?

如果从控制器调用该服务,锁定组件将不起作用:

    $store = new FlockStore(sys_get_temp_dir());
    $factory = new Factory($store);
    $lock = $factory->createLock('MY_SERVICE');
Run Code Online (Sandbox Code Playgroud)

我想避免从控制器调用命令(这就是我创建服务的原因),主要是因为该服务的 HTML 页面和 CLI 的输出不同。

locking symfony symfony4

1
推荐指数
1
解决办法
1088
查看次数

标签 统计

symfony ×2

symfony4 ×2

locking ×1