【问题标题】:Restful API with authentication带有身份验证的 Restful API
【发布时间】:2016-07-04 13:11:55
【问题描述】:

我尝试为我的 web2py 应用程序构建一个 API。

# -*- coding: utf-8 -*-
auth.settings.allow_basic_login = True

@auth.requires_login()
@request.restful()
def api():
    response.view = 'generic.json'

    def GET(tablename, id):
        if not tablename == 'division':
            raise HTTP(400)


        result = db(db.division.title == id).select()

        return dict(result = result)

return locals()

但每次我尝试通过 curl 连接时,我都会得到这个答案:

You are being redirected <a href=\"/my_manager/login?_next=/my_manager/api/get_all_divisions/1.json\">here</a>

当我注释掉这一行时

@auth.requires_login()

everythink 工作正常。

我已经搜索了提示,但到目前为止没有找到任何关于此主题的有用信息。

非常感谢任何帮助。

【问题讨论】:

  • 你的 curl 调用是什么样的?您确定您传递了有效的登录凭据吗?
  • @sarah 我遇到了类似的问题,仍在等待解决方案。我发布了一个关于此的问题,您可能会从 cmets 或我的代码中获得一些帮助。 stackoverflow.com/questions/33938076/…
  • @Anthony 我尝试了 web2py 书中的示例,我确信登录数据是正确的。我的登录是使用电子邮件地址和密码
  • @GauravVichare 谢谢,我在研究这个主题的过程中看到了你的帖子。
  • @SarahWest,你的 curl 请求是什么样的?

标签: web2py


【解决方案1】:

我知道这是一个很老的问题,但这个答案仍然会帮助其他可能遇到同样问题的人:

在您的情况下,您使用的是需要用户登录的@auth.requires_login()

因此,您需要在调用此 api 时发送基本的身份验证凭据。

一个最简单的 curl 调用可以是:

curl --user abc@example.com:abc123 http://localhost:8000/app_name/default/api/table_name.json

这里:

  • abc@example.com 是用户名
  • abc123 是密码
  • app_name 是 web2py 的应用名称
  • table_name 是 db 中的表名

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 2011-11-28
    • 2014-02-09
    • 2018-06-30
    • 2013-08-21
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    相关资源
    最近更新 更多