为了方便讲解与引用,将认证类放在Album模块的模型目录下。用户认证的方式有多种,在这里介绍的一种是作者在开发中常用到的一种,数据库认证的持久性认证。ZF2中的持久性认证其本质还是通过Session来实现的,只不过开发者在开发的时候根据就不会察觉到Session在这期间的存在。ZF2在使用持久性认证的时候如果没有对认证空间进行重新命名,ZF2使用使用一个Zend_auth为其Session的默认命名空间,当你在new一个认证的实例的时候系统会自动的找到Zend_auth对应的Session命名空间。在此也可以看认证类与其他类在进行new 的时候可能会有所不同,这种不同也正是由于Session的相关机制所带来的。
添加文件:`/module/Album/src/Album/Model.MyAuth.php`,具体内容如下:
~~~
namespace Album\Model;
use Zend\Db\Adapter\Adapter as DbAdapter;
use Zend\Authentication\Adapter\DbTable as AuthAdapter;
use Zend\Authentication\AuthenticationService;
class MyAuth {
protected $adapter;
public function __construct() {
$this->adapter = new DbAdapter(array(
'driver'=>'Pdo_Mysql',
'database'=>'test',
'host'=>'localhost',
'username'=>'root',
'password'=>''
));
}
public function auth() {
$authAdapter = new AuthAdapter($this->adapter);
$authAdapter
->setTableName('user') // 认证的数据表
->setIdentityColumn('username') // 认证字段
->setCredentialColumn('password'); // 校验字段
$authAdapter
->setIdentity('admin') // 认证值
->setCredential('admin');// 校验值
$auth = new AuthenticationService();
$result = $auth->authenticate($authAdapter);
if($result->isValid()){
$auth->getStorage()->write($authAdapter->getResultRowObject());
return true;
}
return false;
}
public function isAuth(){
$auth = new AuthenticationService();
if($auth->hasIdentity()) return true;
return false;
}
}
~~~
代码解释:
public function auth() {} 进行认证
public function isAuth(){} 通过持久性认证判断是否已经通过认证
$authAdapter = new AuthAdapter($this->adapter); 实例为一个认证适配器
$auth = new AuthenticationService(); 实例化一个认证服务,以实现持久性认证
- 序言
- 第1章 Zend Framework2 简介
- 1.1 Zend Framework2 简介
- 1.2 下载安装
- 1.3 搭建开发环境
- 第2章 创建ZF2项目
- 2.1 新建一个项目
- 2.2 配置网站
- 2.3 伪静态 .htaccess文件
- 2.4 添加启动/入口文件
- 2.5 添加全局配置文件
- 2.6 添加自动加载文件 init_autoloader.php
- 2.7 IndexController 控制器
- 第3章 创建模块文件
- 3.1 Module 文件
- 3.2 module.config 文件
- 3.2.1 router 路由配置
- 3.2.2 controllers控制器配置
- 3.2.3 view_manager 视图管理器
- 3.2.4 service_manager 服务管理器
- 3.2.5 translator 翻译器
- 3.2.6 navigation 导航条
- 第4章 创建控制器
- 4.1 控制器简介
- 4.2 新建控制器
- 4.3 添加控制器的Action
- 第5章 创建视图模板
- 5.1 创建模板
- 5.2 模板配置
- 5.3 编写布局和错误异常模板
- 5.4 编写Action 对应的模板文件
- 5.5 访问 IndexAction
- 第6章 创建模型
- 6.1 ORM 对象映射法
- 6.2 使用分页导航
- 6.3 自定模型
- 6.4 章节总结
- 第7章 实例应用
- 7.1 建立Album 模块
- 7.2 添加模块文件
- 7.3 添加模块配置文件
- 7.4 创建数据表 album
- 7.5 添加模型文件
- 7.6 添加表单 AlbumForm
- 7.7 添加控制器 AlbumController
- 7.8 添加模板文件
- 第8章 用户认证
- 8.1 建立数据表
- 8.2 新建认证类
- 8.3 引用认证类
- 第9章 结束语