如何更改 HTTP 基本身份验证表单?
How to change HTTP Basic Authentication form?
对于 HTTP 基本身份验证,我需要一个自定义表单,其中包含 site block
和 site password
等字段,而不是 username
和 password
。我只想将文本从用户名更改为站点块,将密码更改为站点密码。
简短的回答是,您不能轻易地使用 HttpAuthentication::Basic
class 中内置的 Rails' 来执行此操作,或者至少没有直接的方法来配置用于凭据的字段,就像您使用 devise
之类的东西一样。硬编码使用编码的 username/password 字段基于它们构建编码的授权散列。
查看此来源code/example:https://github.com/rails/rails/blob/fbe2433be6e052a1acac63c7faf287c52ed3c5ba/actionpack/lib/action_controller/metal/http_authentication.rb
所提供的 username/password 被编码为 WWW-Authentication
header,然后用于生成基于散列 user/password 值的令牌。
基本授权就是基本授权。为了做一些不是那么基本的事情,你必须自己动手。
您可以在控制器操作中捕获表单值并执行以下操作:
user = params[:site_block]
password = params[:site_password]
...然后根据这些变量执行自定义身份验证过程
这是一个可行的示例,需要进行一些调整,但说明了这一点:
https://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.html
很遗憾,您无法更改字段的名称。 HTTP Basic Auth 是 HTTP 规范的一部分,因此该功能被硬编码到浏览器中。
对于 HTTP 基本身份验证,我需要一个自定义表单,其中包含 site block
和 site password
等字段,而不是 username
和 password
。我只想将文本从用户名更改为站点块,将密码更改为站点密码。
简短的回答是,您不能轻易地使用 HttpAuthentication::Basic
class 中内置的 Rails' 来执行此操作,或者至少没有直接的方法来配置用于凭据的字段,就像您使用 devise
之类的东西一样。硬编码使用编码的 username/password 字段基于它们构建编码的授权散列。
查看此来源code/example:https://github.com/rails/rails/blob/fbe2433be6e052a1acac63c7faf287c52ed3c5ba/actionpack/lib/action_controller/metal/http_authentication.rb
所提供的 username/password 被编码为 WWW-Authentication
header,然后用于生成基于散列 user/password 值的令牌。
基本授权就是基本授权。为了做一些不是那么基本的事情,你必须自己动手。
您可以在控制器操作中捕获表单值并执行以下操作:
user = params[:site_block]
password = params[:site_password]
...然后根据这些变量执行自定义身份验证过程
这是一个可行的示例,需要进行一些调整,但说明了这一点: https://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.html
很遗憾,您无法更改字段的名称。 HTTP Basic Auth 是 HTTP 规范的一部分,因此该功能被硬编码到浏览器中。