Restful Authentication使用authenticate_with_http_basic
,但是在网上搜索可以找到很多没有描述的页面。在官方的http://api.rubyonrails.org/上,也可以找到,除了没有描述,没有评论,没有规范。
它是做什么的?它似乎能够使用来自HTTP请求的login_name
和password
,然后可以将它们与users
表中的login_name
和encrypted_password
进行比较...但如果是这样的话,为什么甚至没有一行描述?
2条答案
按热度按时间9rygscc11#
此方法允许您实现基本的http身份验证(即弹出一个小对话框要求输入用户名和密码的那种)。通常,这是限制对开发站点或管理区域的访问的好方法。例如:
此函数将请求基本的http身份验证用户名和密码,或者在输入后它实际上会检查身份验证是否正确。换句话说,这个函数要么调用authenticate_with_http_basic,要么调用request_http_basic_authentication。你可以阅读更多关于它的内容,并查看更多示例here。你通常会调用authenticate_or_request_with_http_而不是调用authenticate_with_http_basic或request_http_basic_authentication,因为前一个函数将所有适当的后一个函数。
P.S:authenticate_with_http_basic不使用POST变量,它使用头信息来获取用户名和密码(request.env['HTTP_AUTHORIZATION'])。您可以查看有关授权函数here的更多信息。
y3bcpkx12#
如果我能在任何地方读到的话,一些细节本可以节省我的时间。
authenticate_with_http_basic
只是从请求中读取basic-auth user/pass,并在请求中存在此类信息时执行内部块。如果客户端没有发送auth,则返回nil
。否则,它返回块评估的任何值。因此,您可以使用返回值来决定是否执行
request_http_basic_authentication
,返回403 forbidden或渲染内容。仅供参考,如果您从注册为
before_action
钩子的方法运行此操作,我注意到该方法的返回值被忽略。如果方法rendered
或redirected
,则不会执行控制器操作。如果方法不执行render
或redirect
,则会执行控制器操作。HTH(关于Rails 5的讨论需要明确)