忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/22 22:39 |
ZF1.11 Zend_Acl
Zend_Aclは認可を扱うクラスです。
Zend_Authの認証とどう違うの?というと、認証はログインできるかどうかの判断、すなわち本人確認を行います。
それに対して認可は認証した後のアクセス権限を意味します。
ブログシステムがあったとして、Zend_Authは管理画面にログインできるかどうかをチェックします。
Zend_Aclは、私は自分のブログを編集できますが他人のブログは編集できず、管理者は誰のブログでも編集できる、といったログイン後に必要となる権限を操作します。

そういった立場上Zend_Authと同時に使用するべきなのですが、まあ今回はとりあえず単品で使ってみます。
リファレンスガイドではのっけからロールの多重継承とか複数のロールに属するとか面倒な解説がなされていますが、いきなりそんなことやったって理解できるわけなかろうがと。
ということでまずは単純な例を作ってみます。
<?php
	//Zend_Acl
	require_once('Zend/Acl.php');
	$acl = new Zend_Acl();
	
	//ロールを作成
	$acl->addRole(new Zend_Acl_Role('admin'))
		->addRole(new Zend_Acl_Role('member'));
	
	//リソースを作成
	$resourceAdmin  = new Zend_Acl_Resource('adminResource');
	$resourceMember = new Zend_Acl_Resource('memberResource');
	
	//Aclにリソースを付与
	$acl->add($resourceAdmin);
	$acl->add($resourceMember);
	
	//ロールに、リソースに対する権限を付与
	$acl->allow('admin', 'adminResource');
	$acl->deny ('member','adminResource');
	$acl->allow('admin', 'memberResource');
	$acl->allow('member','memberResource');
	
	//権限があるかチェック
	var_dump($acl->isAllowed('admin', 'memberResource'));	//true
	var_dump($acl->isAllowed('member','adminResource'));	//false
memberはブログ管理者つまり私、adminはサーバ管理者つまり忍者ブログの中の人を想定しています。
上記では、memberロールを持つユーザはサーバ管理者にしか許されない操作は行えませんが、サーバ管理者はブログ管理者が行える操作は全て行える、という設定になります。

とても簡単に認可制御が行えました。
あとは各ユーザ毎にmemberかadminかを示すフラグを設定すれば完成、めでたしめでたし。
PR


2012/01/20 23:23 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Minecraft1.0 WizardCraft1.2.3 その4 マグマの杖、雷の杖 | HOME | Minecraft1.0 EquivalentExchange 半自動ダークマター生産施設紹介>>
忍者ブログ[PR]