Restful Authentication使用authenticate_with_http_basic
,但网上搜索可以找到许多没有描述的页面。在官方http://api.rubyonrails.org/上,也可以找到它,除了没有描述,没有评论,没有规范。
它做什么?它似乎能够使用HTTP请求中的login_name
和password
,然后可以将它们与login_name
表中的encrypted_password
和users
进行比较......但是就是这样,为什么甚至没有单行描述呢?
答案 0 :(得分:23)
此方法允许您实现基本的http身份验证(弹出一个小对话框询问用户名和密码的类型)。这通常是限制对开发站点或管理区域的访问的好方法。例如:
class AdminController < ApplicationController
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic('Administration') do |username, password|
username == 'admin' && password == 'password'
end
end
end
此函数将请求基本的http身份验证用户名和密码,或者在输入之后,它将实际检查身份验证是否正确。换句话说,此功能可以调用authenticate_with_http_basic,也可以调用request_http_basic_authentication。您可以阅读更多相关信息,并查看更多示例here。你通常会调用authenticate_or_request_with_http_basic而不是调用authenticate_with_http_basic或request_http_basic_authentication,因为前一个函数将适用于后面的所有函数。
P.S:authenticate_with_http_basic不使用POST变量,它使用标头信息来获取用户名和密码(request.env ['HTTP_AUTHORIZATION'])。您可以查看有关授权功能here的更多信息。
答案 1 :(得分:5)
如果我可以在任何地方阅读它们,一些细节可以节省我的时间。
我摆弄它。 authenticate_with_http_basic
只是从请求中读取basic-auth user / pass,并在请求中出现此类信息时执行内部块。
如果客户端未发送auth,则返回nil
。否则,它返回块评估的任何内容。
因此,您可以使用返回值来决定是否执行request_http_basic_authentication
,返回403禁止或呈现内容。
仅供参考,如果您从注册为before_action
挂钩的方法运行此操作,我注意到该方法的返回值被忽略。如果方法rendered
某事或redirected
,则不执行该操作。如果方法不是render
或redirect
,则执行操作。