如何将简单的openid与我网站现有的日志系统集成?

时间:2009-09-14 07:29:52

标签: php openid

任何人都可以将openid简单的逐步集成发布到已经拥有登录系统的网站吗?

我决定使用PHP OpenID 2.1.3,但可以从哪里开始和做什么。

3 个答案:

答案 0 :(得分:3)

我认为您最好的选择是使用Zend Framework中的OpenID模块。它可以单独使用,而不必使用整个框架,并且它们对如何使用它有一个相当简单的解释on their manual pages。这很简单(如果您理解OpenID的概念):

login_page.php:

// Load the library Zend Framework way, or load it yourself...
// Always good to pick apart the library anyway, to see how it works:
Zend_Loader::loadClass('Zend_OpenId');
$consumer = new Zend_OpenId_Consumer();
if(!$consumer->login($_POST['openid_identifier'], 'redirect_to.php'))
 {
  die('OpenID login failed.');
 }

redirect_to.php:

Zend_Loader::loadClass('Zend_OpenId');
$consumer = new Zend_OpenId_Consumer();
if($consumer->verify($_GET, $id))
 {
  echo htmlspecialchars($id).' is a valid ID.';
 }
else
 {
  // redirect to "login.php?login=failed".
  if(!headers_sent())
   {
    header('HTTP/1.1 307 Temporary Redirect', true, 307);
    header('Location: login.php?login=failed');
   }
  else die('Invalid ID.');
 }

使用它比php-openid提供的PHP OpenID库(OpenID Foundation)容易得多。

编辑: 如何实施Zend_OpenId(以回应评论)。

下载latest Zend Framework,然后解压缩文件夹ZendFramework-1.9.2/library/Zend/OpenId

但是你需要做一些事情:

  1. [...]/OpenId/Exception.php中的类扩展值从Zend_Exception更改为Exception
  2. 浏览每个文件(我知道这很繁琐)并将所有需求和include包括在绝对路径名中。
  3. 现在您可以通过以下方式引用这些类:

    require_once '/path/to/OpenId/Consumer.php';
    $consumer = new Zend_OpenId_Consumer();
    // If you plan on making your own OpenID's, use 'Provider' instead of 'Comsumer'.
    require_once '/path/to/OpenId/Provider.php';
    $provider = new Zend_OpenId_Provider();
    

    现在,我能给你的最好的建议是阅读手册!不要指望它第一次工作...... Zend的实现可能更容易,但这并不能阻止OpenID成为痛苦的屁股!

答案 1 :(得分:0)

不,没有简单的指南。有太多的登录系统和不同的实现,使这简单明了。

对于特定的脚本,请尝试使用Google搜索。对于任何其他脚本,您必须将OpenID集成到您的应用程序中。如果您使用MVC,那么您很幸运:查看用户模型并将OpenID插入其中。

答案 2 :(得分:0)

Plaxo的约瑟夫·斯马尔(Joseph Smarr)为OpenID启用网站编写了nice recipe几年的激励。