Username/password 在 Heroku 上为 React 应用程序启用基本身份验证时不被接受
Username/password not accepted when enabling basic authentication for React app on Heroku
我正在尝试使用 create-react-app buildpack, which includes the static buildpack 为部署到 heroku 的 React 应用程序启用基本身份验证。我成功启用了基本身份验证 - 我收到登录提示 - 但不接受我通过配置变量配置的用户名和密码。
这是我的配置:
static.json
:
{
"root": "build/",
"routes": {
"/**": "index.html"
},
"basic_auth": true
}
我在 heroku web ui 中设置了配置变量 BASIC_AUTH_USERNAME
和 BASIC_AUTH_PASSWORD
。根据 static buildpack documentation,这应该会导致在部署期间在 app
目录中创建一个 .htpasswd
文件。
在控制台中,我看到环境变量已设置,但我可以看到 /app
目录中没有生成 .htpasswd
文件:
~ $ printenv
PWD=/app
NODE_ENV=development
NODE_HOME=/app/.heroku/node
HOME=/app
BASIC_AUTH_PASSWORD=mypassword
BASIC_AUTH_USERNAME=myusername
[...]
~ $ ls -a
. .env.production bin package-lock.json
.. .gitignore build package.json
.buildpacks .heroku config public
.env.development .profile.d logs src
README.md node_modules static.json
部署日志文件未显示任何错误或警告:
[...]
=====> Downloading Buildpack: https://github.com/mars/create-react-app-inner-buildpack.git#v9.0.0
=====> Detected Framework: React.js (create-react-app)
Using existing `static.json`
Enabling runtime environment variables
=====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-static.git
=====> Detected Framework: Static HTML
-----> Installed nginx 1.19.0 to /app/bin
Using release configuration from last framework (Static HTML).
-----> Discovering process types
Procfile declares types -> (none)
Default types for buildpack -> web
-----> Compressing...
Done: 81M
-----> Launching...
Released v22
https://myapp.herokuapp.com/ deployed to Heroku
如何找出没有生成 .htpasswd 文件的原因?或者是否有更好的方法来启用基本身份验证(无需在源代码中存储 username/password)?
我自己找到了答案here:
"BASIC_AUTH_PASSWORD
必须是您密码的哈希值。使用命令 openssl passwd -apr1
来哈希您的密码"
我正在尝试使用 create-react-app buildpack, which includes the static buildpack 为部署到 heroku 的 React 应用程序启用基本身份验证。我成功启用了基本身份验证 - 我收到登录提示 - 但不接受我通过配置变量配置的用户名和密码。
这是我的配置:
static.json
:
{
"root": "build/",
"routes": {
"/**": "index.html"
},
"basic_auth": true
}
我在 heroku web ui 中设置了配置变量 BASIC_AUTH_USERNAME
和 BASIC_AUTH_PASSWORD
。根据 static buildpack documentation,这应该会导致在部署期间在 app
目录中创建一个 .htpasswd
文件。
在控制台中,我看到环境变量已设置,但我可以看到 /app
目录中没有生成 .htpasswd
文件:
~ $ printenv
PWD=/app
NODE_ENV=development
NODE_HOME=/app/.heroku/node
HOME=/app
BASIC_AUTH_PASSWORD=mypassword
BASIC_AUTH_USERNAME=myusername
[...]
~ $ ls -a
. .env.production bin package-lock.json
.. .gitignore build package.json
.buildpacks .heroku config public
.env.development .profile.d logs src
README.md node_modules static.json
部署日志文件未显示任何错误或警告:
[...]
=====> Downloading Buildpack: https://github.com/mars/create-react-app-inner-buildpack.git#v9.0.0
=====> Detected Framework: React.js (create-react-app)
Using existing `static.json`
Enabling runtime environment variables
=====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-static.git
=====> Detected Framework: Static HTML
-----> Installed nginx 1.19.0 to /app/bin
Using release configuration from last framework (Static HTML).
-----> Discovering process types
Procfile declares types -> (none)
Default types for buildpack -> web
-----> Compressing...
Done: 81M
-----> Launching...
Released v22
https://myapp.herokuapp.com/ deployed to Heroku
如何找出没有生成 .htpasswd 文件的原因?或者是否有更好的方法来启用基本身份验证(无需在源代码中存储 username/password)?
我自己找到了答案here:
"BASIC_AUTH_PASSWORD
必须是您密码的哈希值。使用命令 openssl passwd -apr1
来哈希您的密码"