gpt4 book ai didi

jquery - 自定义摘要身份验证

转载 作者:行者123 更新时间:2023-12-01 00:29:35 26 4
gpt4 key购买 nike

  • 我制作了一个用于摘要身份验证的 Http 模块。在服务器上,对于页面的每个请求,该模块都会检查是否存在“authenticate” header 。如果此 header 不存在,用户将收到 401 消息。
  • 在客户端,我使用 jQuery 插件进行摘要式身份验证。

据我所知,我有以下功能:

  1. 用户在两个输入字段中输入用户名和密码(不是在浏览器的 Http 身份验证提示中)
  2. 使用 jQuery,我可以对服务器上的某个 protected 页面进行 ajax 调用。此 ajax 调用基于 Digest Http 协议(protocol)。这意味着我要添加包含用户名、noncecount、clientnonce、MD5 哈希密码等的身份验证 header 。
  3. 然后服务器响应 200 消息:)

如果用户转到另一个页面,它将收到“401 访问被拒绝”,因为该请求中没有身份验证 header 。这就是问题所在。

  • 如果我使用标准摘要协议(protocol),那么浏览器会自动在每个请求中添加授权 header ,并且我不会遇到此问题。但我使用这种方式是因为我不知道用户在浏览器的 Http 身份验证对话框中填写他的凭据。我们想要有我们的自定义对话框。在 jQuery DigestJ 插件中, header 称为“authenticate”而不是“authorization”,协议(protocol)称为 DigestJ 而不是 Digest。这样,当服务器响应 401 消息时,我就不会收到用于输入凭据的浏览器 Http 对话框。我们不能使用表单例份验证。
  • 我可以使用 jQuery session 插件在客户端存储用户凭据,但如何修改每个请求的 Http header ?我需要添加“身份验证” header 并插入 session 中的凭据。

最佳答案

我正在使用基本的 HTTP 身份验证来使用 joomla 组件中的 REST Web 服务,并且我的用户无需输入任何内容(只需登录 joomla 一次)。我只是获取已经登录的用户,然后使用 CURL 将其发送到我的网络服务

    $ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//$username and $pass are the vars that will be used for authentication you can get them from your session or a cookie or in my case i got them from joomla JFactory::getUser()->username and JFactory::getUser()->password
curl_setopt($ch, CURLOPT_USERPWD, JFactory::getUser()->username.':'.JFactory::getUser()->password);
//here comes the important thing
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response=curl_exec($ch);

另一方面,您只需根据数据库检查 $_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW'] 即可完成

if (!isset($_SERVER['PHP_AUTH_USER'])||$_SERVER['PHP_AUTH_USER']==''||!isset($_SERVER['PHP_AUTH_PW'])||$_SERVER['PHP_AUTH_PW']=='') {
header('WWW-Authenticate: Basic realm="Something"');
header('HTTP/1.0 401 Unauthorized');
echo 'You must be a valid user to access this contents';
exit;
} else {
// go to your database check they are valid and return whatever you want to return
}

关于jquery - 自定义摘要身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5349865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com