如何将 webform 登录添加到 nginx 基本身份验证网站?

deb*_*gme 6 nginx basic-authentication

我有一个带有基本身份验证的简单 nginx 静态站点。当有人想要访问该站点时,他们会收到浏览器模式对话框,提示输入用户名/密码:

nginx.conf:

server {
  listen 1337;
  server_name _;
  root /app/public;
  location / {
    auth_basic "Protected";
    auth_basic_user_file /app/etc/htpasswd;
  }
}
Run Code Online (Sandbox Code Playgroud)

如何更改它以便我最终得到一个网络表单而不是对话框,以针对同一htpasswd文件输入用户名和密码?

我尝试将以下内容添加到nginx.conf

# In location / block
error_page 401 =418 /login/?dest=https://$http_host$request_uri;

# In server block
location /login/ {
  auth_basic off;
}
Run Code Online (Sandbox Code Playgroud)

返回代码418以杀死弹出窗口,我喜欢茶壶。在/app/public/login/我创建的index.html有一个简单的形式:

server {
  listen 1337;
  server_name _;
  root /app/public;
  location / {
    auth_basic "Protected";
    auth_basic_user_file /app/etc/htpasswd;
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一个 AJAX/XHR 到原始目标 url 以查看它是否返回 200(登录成功)或 418(登录失败),但我无法弄清楚如何在所有后续请求中设置 Authorization 标头或是否可能。任何帮助/建议表示赞赏。