ruby-on-rails – rails authenticate_or_request_with_http_basic

ruby-on-rails – rails authenticate_or_request_with_http_basic,第1张

概述在我的RoR应用程序中,我需要使用基本身份验证来保护页面,并且我希望每次用户链接到该页面时都会询问凭据. 所以我在 *** 作之前添加了一个过滤器,如下所示: before_filter :request_confirm, :only => [:delete_device] 过滤方法是: def request_confirm user = User.find_by_id(session[:user 在我的RoR应用程序中,我需要使用基本身份验证来保护页面,并且我希望每次用户链接到该页面时都会询问凭据.

所以我在 *** 作之前添加了一个过滤器,如下所示:

before_filter :request_confirm,:only => [:delete_device]

过滤方法是:

def request_confirm  user = User.find_by_ID(session[:user_ID])  authenticate_or_request_with_http_basic do |nick,pass|    nick == user.nickname and pass == user.password   endend

没关系,但只是第一次因为rails保存插入的数据,所以以下时间过滤器将被执行但凭证不会询问.

我不知道保存凭据的位置.
.

解决方法 这是方法authenticate_or_request_with_http_basic以及一般http身份验证的工作方式. authenticate_or_request_with_http_basic可以重写为:“首先尝试进行身份验证,如果未经过身份验证,请求身份验证”.该方法的源代码如下:

def authenticate_or_request_with_http_basic(realm = "Application",&login_procedure)  authenticate_with_http_basic(&login_procedure) || request_http_basic_authentication(realm)end

那会发生什么.当您第一次点击调用此 *** 作的URL时,此authenticate_or_request_with_http_basic将返回http响应401 Unauthorized.浏览器理解这是一个身份验证请求,并显示一个输入用户名和密码的对话框,然后重新发送相同URL的请求,但将您的凭据包含在请求标头中.您再次点击过滤器,这次方法authenticate_or_request_with_http_basic看到请求中有身份验证标头并授权您成功.并且浏览器会在每个后续请求中将这些auth标头发送到此域(直到您关闭浏览器).

因此,如果您需要多次测试,可以关闭并重新打开浏览器.我相信只使用这些方法就不可能在每个请求上请求身份验证和身份验证,因为当应用程序从具有Auth标头的浏览器获取请求时,它无法在身份验证请求之后立即判断这是否是请求,或者这些是之前保留的标头.

但这可以通过使用cookie或存储在会话中的值以某种方式完成.

总结

以上是内存溢出为你收集整理的ruby-on-rails – rails authenticate_or_request_with_http_basic全部内容,希望文章能够帮你解决ruby-on-rails – rails authenticate_or_request_with_http_basic所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1279503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存