php-如何将简单的openid与站点的现有日志记录系统集成?

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

我决定使用PHP OpenID 2.1.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.');
 }

它比OpenID Foundation提供的PHP OpenID库(php-openid)易于使用.

编辑:如何实现Zend_OpenId(响应评论).

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

但是,您需要做一些事情:

>将[/]/OpenId/Exception.php中的类扩展值从Zend_Exception更改为Exception.
>浏览每个文件(很麻烦,我知道),然后将所有require和include替换为绝对路径名.

现在,您可以通过以下方式引用这些类:

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陷入困境!

上一篇:java-使用appengine的openid


下一篇:python-Google App Engine身份验证失败