krydos / persona-yii
Mozilla Persona (BrowserID) 扩展,适用于 Yii 框架
dev-master
2014-01-26 17:11 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-24 03:08:05 UTC
README
安装
Composer
将以下内容添加到您的 composer 文件中 require 部分
krydos/persona-yii
手动安装
- 进入您的扩展文件夹
- 在扩展文件夹中克隆此仓库
- 将以下行添加到 config 文件中的 import 部分
'ext.persona.Persona' 和 'ext.persona.PersonaUserIdentity'
您的 import 部分 应该看起来像这样
'import' => array( '...', 'ext.persona.Persona', 'ext.persona.PersonaUserIdentity', '...', ),
安装完成。太好了! :)
使用方法
要在视图中添加 Persona 登录按钮,可以像这样调用小部件
<?php $this->widget('ext.persona.PersonaWidget'); ?>
PersonaWidget 可以接受多个参数,如
- button_text - Persona 按钮上的文本
- button_style - Persona 按钮的样式(橙色、深色或未设置时的默认样式)
- login_url - 登录系统的 URL 地址
- logout_url - 从系统注销的 URL 地址
PersonaWidget 是默认的 Yii 小部件,因此您可以像这样设置所有这些参数
$this->widget('ext.persona.PersonaWidget', array( 'button_text' => 'Login button text', 'button_style' => 'dark', 'login_url' => $this->createUrl('site/login'), 'logout_url' => $this->createUrl('site/logout'), ));
在您的 登录动作 中添加以下行
$identity = new PersonaUserIdentity('User'); if($identity->authenticate()) { Yii::app()->user->login($identity); echo json_encode(array('url'=>Yii::app()->user->returnUrl)); Yii::app()->end(); }
让我们看看这里发生了什么。
$identity = new PersonaUserIdentity();
这行代码创建了一个 PersonaUserIdentity 对象。这类似于默认的 Yii UserIdentity,但您可以传递一些参数进去。
- 第一个参数是模型名称。(默认为 User)
- 第二个参数是电子邮件字段名称(默认为 email)
下一行是
if($identity->authenticate()) {
这也类似于默认的 UserIdentity。这里您只需通过电子邮件检查用户是否存在。
Yii::app()->user->login($identity);
这也是 UserIdentity 的默认行。这行将登录信息写入 SESSION
echo json_encode(array('url'=>Yii::app()->user->returnUrl)); Yii::app()->end();
这是一条 非常重要的 行。登录成功后,您可能想要将用户重定向到某个 URL 或上面的上一个用户 URL。您应该创建一个包含带有 'url' 字段的 JSON 响应,该字段包含重定向的 URL。然后在此响应之后,您应该结束 Yii 应用程序。
因为 Persona 通过 Ajax 工作,您可能想要检查动作中的 persona 请求。您可以使用以下方法进行检查
if(Persona::isPersonaRequest()) {/* continue persona auth */ }
就是这样。随时发送 Pull Request :)