gpt4 book ai didi

openid - 为什么在OpenID 2中使用HTML表单重定向?

转载 作者:行者123 更新时间:2023-12-04 03:14:18 24 4
gpt4 key购买 nike

为什么要执行自动HTML发布而不是简单的重定向?

这样是不是开发人员可以在已知OpenID时自动生成将目录发布到远程服务器的登录表单?

例如。

  • 用户尚未登录,并访问您的登录页面。
  • 您可以从cookie中检测用户的openID。
  • 生成
  • 表单,该表单直接发布到远程OpenID服务器。
  • 远程服务器将用户重定向回网站。
  • 网站登录用户。

  • 如果是这样,我可以看到好处。但是,这假设您在用户注销时将用户的openID保留在cookie中。

    我几乎找不到有关如何最好地实现此规范的信息。

    请参阅官方规范中的HTML FORM重定向:

    http://openid.net/specs/openid-authentication-2_0.html#indirect_comm

    我通过查看 PHP OpenID Library(2.1.1版)发现了这一点。
    // Redirect the user to the OpenID server for authentication.
    // Store the token for this authentication so we can verify the
    // response.

    // For OpenID 1, send a redirect. For OpenID 2, use a Javascript
    // form to send a POST request to the server.
    if ($auth_request->shouldSendRedirect()) {
    $redirect_url = $auth_request->redirectURL(getTrustRoot(),
    getReturnTo());

    // If the redirect URL can't be built, display an error
    // message.
    if (Auth_OpenID::isFailure($redirect_url)) {
    displayError("Could not redirect to server: " . $redirect_url->message);
    } else {
    // Send redirect.
    header("Location: ".$redirect_url);
    }
    } else {
    // Generate form markup and render it.
    $form_id = 'openid_message';
    $form_html = $auth_request->htmlMarkup(getTrustRoot(), getReturnTo(),
    false, array('id' => $form_id));

    // Display an error if the form markup couldn't be generated;
    // otherwise, render the HTML.
    if (Auth_OpenID::isFailure($form_html)) {
    displayError("Could not redirect to server: " . $form_html->message);
    } else {
    print $form_html;
    }
    }

    最佳答案

    正如Mark Brackett所说,其主要动机是通过使用重定向和GET来限制有效负载大小。一些实现足够聪明,仅在消息超过一定大小时才使用POST,因为POST技术肯定有缺点。 (其中最重要的是您的“后退”按钮不起作用的事实。)其他实现(例如您引用的示例代码)则出于简单性和一致性的考虑,并省略了该条件。

    关于openid - 为什么在OpenID 2中使用HTML表单重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34623/

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