如何更改HTTP基本身份验证表单



对于HTTP基本身份验证,我需要一个自定义表单,它包含类似site blocksite password的字段,而不是usernamepassword。我只想把文本从用户名改为站点块,从密码改为站点密码。

标准表格参考:https://httpbin.org/basic-auth/user/passwd

简单的答案是,您不能轻易地使用Rails内置的HttpAuthentication::Basic类来实现这一点,或者至少没有一种简单的方法来配置要用于凭据的字段,就像使用devise一样。它被硬编码为使用编码的用户名/密码字段来基于它们构建编码的授权哈希。

请参阅以下源代码/示例:https://github.com/rails/rails/blob/fbe2433be6e052a1acac63c7faf287c52ed3c5ba/actionpack/lib/action_controller/metal/http_authentication.rb

提供的用户名/密码被编码到WWW-Authentication标头中,然后用于生成基于散列用户/密码值的令牌。

基本身份验证就是基本身份验证。为了做一些不那么基本的事情,你必须自己动手。

您可以在控制器操作中捕获表单值,并执行以下操作:

user = params[:site_block]
password = params[:site_password]

然后基于这些变量执行自定义验证过程

这里有一个可行的例子,需要进行一些调整,但说明了这一点:https://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.html

很遗憾,您无法更改字段的名称。HTTP基本身份验证是HTTP规范的一部分,因此该功能被硬编码到浏览器中。

最新更新