加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 使用API??身份验证和未登录的用户构建API驱动的网站

发布时间:2020-12-16 02:54:03 所属栏目:百科 来源:网络整理
导读:我已经构建了 a website that provides search results on legal documents.该站点的功能之一是REST API.目前,当某人提交查询时,将重新加载整个页面,并且API将被命中服务器端.我想重建网站,以便在人们调整搜索参数时,使用支持REST API的AJAX在客户端分页结果
我已经构建了 a website that provides search results on legal documents.该站点的功能之一是REST API.目前,当某人提交查询时,将重新加载整个页面,并且API将被命中服务器端.我想重建网站,以便在人们调整搜索参数时,使用支持REST API的AJAX在客户端分页结果.

API需要登录(以便在需要时可以对其进行限制),但通常不使用该站点.

我怎样才能让人们可以在不登录的情况下使用网站,但他们对网站的使用是否会影响到API客户端?

我目前最好的想法是:

>只需将用户名和密码放入网站的JavaScript中,然后在进行查询时使用它们登录API.授予这些凭证不受限制的API访问权限.除了将凭据放入我的JavaScript之外,这可能有用.
>继续完成服务器端的所有API工作,提出动态页面重新加载带来的速度和UX改进.

做1号很糟糕,做2号基本上放弃了我想要的那种网站.

想法?

解决方法

也许这是一个重复的 “How to make sure that my AJAX requests are originating from the same server in Python”?如果我不理解这张海报与该海报有什么不同,我不想标记它.

根据您网站的API信息页面,您正在使用tastypie,并且您的API用户正在使用BasicAuthentication

您是否尝试过通过MultiAuthentication将BasicAuthentication与另一个身份验证选项相结合?也许您可以使用SessionAuthenticaion并使用允许匿名的身份验证后端.这样,API用户将继续传递他们的用户名/密码(如果你走这条路线,API密钥),网站的用户将回退到匿名会话,通过SessionAuthenticaton进行身份验证.

或者代替SessionAuthentication,创建自定义身份验证,如here所示,并使用一些逻辑来确定使用者是否与API位于同一主机上.

Tastypie的ApiKeyAuthentication方法可以配置为使用自定义标头…

从评论中迁移并合并:

基于How does Google Maps secure their API Key?(我更喜欢Franci Penov对已接受的答案的答案)如果我要实现这个,我将使用ApiKeyAuthentication的两步过程来确认有效的API密钥,然后进行“推荐检查”,以确保密钥来自预期的来源.如果根据源计算密钥,则会更简单,如上面链接的答案所示.

实际上tastypie的SessionAuthentication方法(authentication.py)中的代码执行类似的操作…

...

referer = request.META.get('HTTP_REFERER')

if referer is None:
    return False

good_referer = 'https://%s/' % request.get_host()

if not same_origin(referer,good_referer):
    return False

...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读