為了方便講解與引用,將認(rèn)證類放在Album模塊的模型目錄下。用戶認(rèn)證的方式有多種,在這里介紹的一種是作者在開發(fā)中常用到的一種,數(shù)據(jù)庫認(rèn)證的持久性認(rèn)證。ZF2中的持久性認(rèn)證其本質(zhì)還是通過Session來實(shí)現(xiàn)的,只不過開發(fā)者在開發(fā)的時候根據(jù)就不會察覺到Session在這期間的存在。ZF2在使用持久性認(rèn)證的時候如果沒有對認(rèn)證空間進(jìn)行重新命名,ZF2使用使用一個Zend_auth為其Session的默認(rèn)命名空間,當(dāng)你在new一個認(rèn)證的實(shí)例的時候系統(tǒng)會自動的找到Zend_auth對應(yīng)的Session命名空間。在此也可以看認(rèn)證類與其他類在進(jìn)行new 的時候可能會有所不同,這種不同也正是由于Session的相關(guān)機(jī)制所帶來的。
添加文件:`/module/Album/src/Album/Model.MyAuth.php`,具體內(nèi)容如下:
~~~
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') // 認(rèn)證的數(shù)據(jù)表
->setIdentityColumn('username') // 認(rèn)證字段
->setCredentialColumn('password'); // 校驗(yàn)字段
$authAdapter
->setIdentity('admin') // 認(rèn)證值
->setCredential('admin');// 校驗(yàn)值
$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() {} 進(jìn)行認(rèn)證
public function isAuth(){} 通過持久性認(rèn)證判斷是否已經(jīng)通過認(rèn)證
$authAdapter = new AuthAdapter($this->adapter); 實(shí)例為一個認(rèn)證適配器
$auth = new AuthenticationService(); 實(shí)例化一個認(rèn)證服務(wù),以實(shí)現(xiàn)持久性認(rèn)證
- 序言
- 第1章 Zend Framework2 簡介
- 1.1 Zend Framework2 簡介
- 1.2 下載安裝
- 1.3 搭建開發(fā)環(huán)境
- 第2章 創(chuàng)建ZF2項(xiàng)目
- 2.1 新建一個項(xiàng)目
- 2.2 配置網(wǎng)站
- 2.3 偽靜態(tài) .htaccess文件
- 2.4 添加啟動/入口文件
- 2.5 添加全局配置文件
- 2.6 添加自動加載文件 init_autoloader.php
- 2.7 IndexController 控制器
- 第3章 創(chuàng)建模塊文件
- 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 服務(wù)管理器
- 3.2.5 translator 翻譯器
- 3.2.6 navigation 導(dǎo)航條
- 第4章 創(chuàng)建控制器
- 4.1 控制器簡介
- 4.2 新建控制器
- 4.3 添加控制器的Action
- 第5章 創(chuàng)建視圖模板
- 5.1 創(chuàng)建模板
- 5.2 模板配置
- 5.3 編寫布局和錯誤異常模板
- 5.4 編寫Action 對應(yīng)的模板文件
- 5.5 訪問 IndexAction
- 第6章 創(chuàng)建模型
- 6.1 ORM 對象映射法
- 6.2 使用分頁導(dǎo)航
- 6.3 自定模型
- 6.4 章節(jié)總結(jié)
- 第7章 實(shí)例應(yīng)用
- 7.1 建立Album 模塊
- 7.2 添加模塊文件
- 7.3 添加模塊配置文件
- 7.4 創(chuàng)建數(shù)據(jù)表 album
- 7.5 添加模型文件
- 7.6 添加表單 AlbumForm
- 7.7 添加控制器 AlbumController
- 7.8 添加模板文件
- 第8章 用戶認(rèn)證
- 8.1 建立數(shù)據(jù)表
- 8.2 新建認(rèn)證類
- 8.3 引用認(rèn)證類
- 第9章 結(jié)束語
