将 CakePHP 与 OpenId 集成
本文介绍如何将 OpenId 与您的 CakePHP 项目集成……
点击查看完整教程
如今,每个人都处于快速发展的状态。因此,大多数互联网用户发现注册过程非常耗时。有时,如果他们只是想避免烦人的注册过程,他们可能会离开您的网络产品。因此,一个很好的替代方案是使用 `OpenId`_。OpenId 是让您的身份验证系统更加灵活的绝佳方法。要实现此功能,我们必须拥有一个基本的工作身份验证系统。点击了解如何构建基本身份验证系统。
先决条件
首先,您的 PHP 必须具有 OpenID 库。您可以从此处下载:这里。完成库下载后,将名为 Auth 的文件夹解压缩到您的 Web 应用程序的 /app/vendors/ 文件夹中。注意:文件夹是 /app/vendors/,而不是 /vendors/,后者位于您的 Web 应用程序根目录下的 app 文件夹之外。其次,您必须拥有适用于 CakePHP 的 OpenId 插件。要下载此插件,请遵循此链接。现在,类似地,将此下载解压缩到您的 /app/plugins/ 文件夹中。解压缩后,您将在 /app/plugins/ 中的 openid 文件夹中拥有一个文件夹。
编码
- 首先,您需要将 OpenId 的 Auth 组件替换为 CakePHP 的默认 Auth 组件。为此,请编辑您的 `appcontroller.php` 文件。通过实现以下代码将扩展 Auth 组件的功能。这里很重要的一点是,您仍然拥有旧 Auth 组件的权限。您仍然可以使用它的变量和函数,例如 `$this->Auth->allow("*")`;
var $components = array(
'Openid.OpenAuth'
);
- 现在,您需要编辑您的 `login.ctp` 视图文件。当提交以下表单时,Auth 组件将尝试使用用户名和密码字段登录用户。但是,如果它无法使用用户名和密码登录,则它将检查是否指定了 OpenId URL。如果发生这种情况,它将尝试对 OpenID 服务器进行 URL 验证。如果授予权限,OpenAuth 组件将向会话添加用户。<?php echo $this->Form->create(array('action' => 'login')); echo $this->Form->input(array('openid' => array('label' => 'OpenIDURL'))); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->end('登录'); ?>
结语
就是这样,在完成所有这些操作之后,我们拥有一个具有 OpenId 的工作身份验证系统。