繁体   English   中英

Symfony 动态数据库凭证

[英]Symfony dynamic database credentials

是否可以在应用程序启动时输入以在 Symfony 中设置数据库用户/密码(如 phpMyAdmin)?

我希望我的应用程序这样做:

  • 欢迎页面(仅 html,没有数据库连接,只需输入 db 用户名/密码(如 phpMyAdmin))
  • 用户在输入上设置用户名/密码并单击确定按钮 => 值可以设置为请求/发布或 controller 中的 Session 示例
  • Symfony 将数据库连接到所有应用程序并将用户重定向到“app_index”路由

是否可以使用 Symfony 5 来做到这一点?

这是我的 controller 动作:

public function database_login(Request $request, Connection $connection): Response
  {
    if ($request->isMethod('POST') && $request->request->has('dbpass')) {
      $dbpass = $request->request->get('dbpass');
      $params = $connection->getParams();
      $params['password'] = $dbpass;

      $connection->__construct($params, $connection->getDriver(), $connection->getConfiguration(), $connection->getEventManager());
      $connection->connect();
      return $this->redirectToRoute('app_index');
    }
    return new Response(
      '<form method="post">
        <input type="password" name="dbpass">
        <button type="submit">OK</button>
      </form>'
    );
  }

新的连接工作正常,但在redirecToRoute() function 后丢失。

你能帮助我吗?

@barbuslex,您可以将变量保存到 session。

$request->getSession()->set('db_login', 'login');
$request->getSession()->set('db_password', 'password');

此外,为避免在每个请求中手动传递这些参数,您可以使用 EventListener,例如: https://symfony.com/doc/current/event_dispatcher.html#request-events-checking-types

但是,也许您需要另一个更早触发的事件。 或者玩弄听众的“优先级”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM