【问题标题】:HTTP basic authentication in javascript, jquery or django?javascript、jquery 或 django 中的 HTTP 基本身份验证?
【发布时间】:2012-03-17 16:20:09
【问题描述】:

我正在开发一个网络应用程序 (A),作为另一个网站 (B) 的“前端”,它需要基本的 HTTP 身份验证(即弹出并要求输入用户名和密码的那种) )。

在我的网络应用程序中,每个用户已经将 B 的用户名和密码存储为 A 帐户的一部分。但是,当用户第一次尝试从 A 访问 B 中的资源时,它会提示输入用户名和密码(但在接下来的会话中不再需要)。我希望用户 永远 必须明确输入他的凭据(因为它们已经存储在他的帐户中)。

使用 javascript/jquery 或一些 Django 代码,是否可以在后台预先验证此用户,例如当他们登录到 A 时?使用用户名和密码向 B 中的某个资源发送请求应该只是一件简单的事情,因此

谢谢,我希望这个问题很清楚。

【问题讨论】:

  • A 和 B 是否在完全不同的域上?

标签: javascript jquery django http-authentication


【解决方案1】:

jQuery ajax() 方法支持带有“用户名”和“密码”选项的 HTTP 身份验证。

jQuery.ajax() manual:

如果服务器在提供响应之前执行 HTTP 身份验证,则可以通过用户名和密码选项发送用户名和密码对。

B. VB.:

使用用户名和密码向 B 中的某个资源发送请求应该很简单

我没有测试,但绝对值得一试。可能只要服务器授权客户端,它就不应该再次提示它输入凭据,所以值得一试。

【讨论】:

【解决方案2】:

我相信您可以直接将其粘贴在 URL 中。

http://user:pass@server.domain.tld/dir/file.ext

【讨论】:

  • 这样任何人都可以看到您的密码吗?
  • @Secator ... 这是基本的 HTTP 身份验证。任何人都可以看到您的密码,因为 HTTP 是一个明文协议。事实上,您的浏览器已经采用了这种方式,只是没有告诉您。最佳情况下,这应该使用 SSL 来完成,但这不是手头的问题。问题是如何进行身份验证,这是最快的方法。
【解决方案3】:

简短的回答是,如果不引入涉及 B 后端的通用身份验证/安全令牌共享等机制,您可能无法做到这一点。

由于 B 可能是不同的来源,Same Origin Policy 将阻止您从 A 提供的页面向 B 发出请求。

如果您能够更改 B 后端,您可以在用户登录 A 时从 A 上的页面向 B 发出 JSONP 请求(即不是通过 HTTP 标头的基本身份验证)。

另请参阅http://en.wikipedia.org/wiki/Single_sign-on 以获得不同解决方案的灵感。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2021-03-21
    • 2011-11-12
    • 2011-05-05
    • 1970-01-01
    • 2023-04-07
    • 2011-08-22
    相关资源
    最近更新 更多