【发布时间】:2021-03-10 08:02:24
【问题描述】:
是否可以在应用程序启动时在 Symfony 中输入设置数据库用户/密码(如 phpMyAdmin)?
我希望我的应用程序这样做:
- 欢迎页面(只有 html,没有数据库连接,只需输入 db 用户名/密码(如 phpMyAdmin))
- 用户在输入上设置用户名/密码,然后单击确定按钮 => 可以通过示例将值设置为控制器中的请求/发布或会话
- Symfony 将数据库连接到所有应用程序并将用户重定向到“app_index”路由
Symfony 5 可以做到吗?
这是我的控制器操作:
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() 函数后丢失。
你能帮帮我吗?
【问题讨论】:
-
HTTP 是无状态的。如果您不将数据库登录详细信息保存在某处,显然用户输入的任何凭据都会丢失
-
是的,我想使用 Session 或 $config->setParameter 而不是 Request,但我不知道如何使用它为所有控制器注入原则。文档没有解释如何使用它:S
-
为什么不创建登录页面并使用 access_control 保护所有路由,除非 /login ?像这样,所有应用程序都将受到保护,您将被重定向到自动登录
-
我想让用户能够使用他自己的数据库凭据(如 phpmyadmin)连接到数据库
标签: php database symfony authentication dynamic