ajax – 使用API??身份验证和未登录的用户构建API驱动的网站
我已经构建了
a website that provides search results on legal documents.该站点的功能之一是REST API.目前,当某人提交查询时,将重新加载整个页面,并且API将被命中服务器端.我想重建网站,以便在人们调整搜索参数时,使用支持REST API的AJAX在客户端分页结果.
API需要登录(以便在需要时可以对其进行限制),但通常不使用该站点. 我怎样才能让人们可以在不登录的情况下使用网站,但他们对网站的使用是否会影响到API客户端? 我目前最好的想法是: >只需将用户名和密码放入网站的JavaScript中,然后在进行查询时使用它们登录API.授予这些凭证不受限制的API访问权限.除了将凭据放入我的JavaScript之外,这可能有用. 做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 ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |