加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHP中创建OpenID提供程序

发布时间:2020-12-13 14:01:42 所属栏目:PHP教程 来源:网络整理
导读:我有一个现有的网站,我想变成一个OpenID提供商.我的所有用户帐户都存储在 mysql表中. 我认为,由于OpenID被表示为一个URL,我将要做一些像:http://login.mydomain.com/username 我设置了一个子域,并创建了一个htaccess,将所有URL重定向到/login.php?username=
我有一个现有的网站,我想变成一个OpenID提供商.我的所有用户帐户都存储在 mysql表中.

我认为,由于OpenID被表示为一个URL,我将要做一些像:http://login.mydomain.com/username

我设置了一个子域,并创建了一个htaccess,将所有URL重定向到/login.php?username=[username]

我看到它的方式,告诉我,如果我错了,有人去说StackOverflow,他们进入http://login.mydomain.com/myUsername.他们到达我的服务器上的一个页面,要求他们的密码(因为我已经知道他们的用户名),我检查它匹配,并返回键?

人们在线推荐使用Zend_OpenId_Provider.我一直在阅读他们的文档(http://framework.zend.com/manual/en/zend.openid.provider.html),但我觉得很困惑.他们没有用户登录/密码存储在数据库中的真实世界示例.

我也看过php-open-id(http://github.com/openid/php-openid),但也没有帮助.

这似乎是一件很常见的事情.有没有一个教程在那里或一个例子我可以轻松适应?

当你用zend-framework标记这个问题时,我想你想用ZF来实现这个.

看看Zend_OpenId_Provider的构造函数

public function __construct($loginUrl = null,$trustUrl = null,Zend_OpenId_Provider_User $user = null,Zend_OpenId_Provider_Storage $storage = null,$sessionTtl = 3600)

重要的一个是$storage参数.

在http://framework.zend.com/manual/en/zend.openid.provider.html的例子中,它们没有传递任何参数.这意味着默认使用Zend_OpenId_Provider_Storage_File提供程序.再次,这个将在TEMP目录(/ tmp在Linux上)的文件中默认存储.

基本上这个例子应该是完全正常的.您可以通过调用$server-> register($someid,$somepassword)来注册更多的用户;

但是,由于它在临时目录中存储每个默认的帐户,所以您应该将该行替换为这样(如果可以将文件存储在文件中):

$dir = "/var/lib/myopenidusers";
mkdir($dir);
$server = new Zend_OpenId_Provider(null,null,new Zend_OpenId_Provider_Storage($dir) );

现在,如果您希望将用户存储在数据库中,则必须实现自己的Provider_Storage.

看一下抽象类抽象类Zend_OpenId_Provider_Storage.这是您必须实现的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读