zend新王者好久没有写了,平时上班,没啥兴趣了,周末xx也写点吧,今天说说User接口和权限控制的讨论。
首先来谈谈权限范围内具体几个工作:
1 权限菜单
2 权限控制(控制是否能访问)
3 登录控制
在ACEGI中,它的数据描述抽象成了一张田字表,圈圈叉叉,然后通过XOR得到权限值,但这种方法在ACEGI中使用我觉得还是比较麻烦的,当然麻烦的好处是人家确实性能高超,没有做不出来的东西,但一般如果只是简单的控制我觉得貌似有牛刀之嫌了。我理解的权限控制是这样的一种实现:
<?php
/*
@description 定义用户处理类的接口方法
@author edwardpro
*/
interface User{
function isLogin($uid="");
function login($user,$pass);
function logout($user);
function getUserInfo($uid="");
function isValid($userinfo);
}
?>
方法和实现都很容易理解
isLogin判断是否登录
login、logout 登录退出
getUserInfo得到用户信息,包括得到权限信息
isvalid是否合法用户
看似比较松散的结构,但充分考虑的网页应用的局限性,和ACEGI这类产品级产品完全不同,通过自己实现如上述的5个方法我相信绝对可以达到权限控制的目标了。
这是一个被注入在Action中的User接口,在ACTION中会在构造函数中增加:
function setUser(){
require_once(USER_CLASS_PATH.'class.'.USER_CLASS_NAME.'.php');
if(class_exists(USER_CLASS_NAME)){
$cName=USER_CLASS_NAME;
$this->userClass=new $cName();
}
if($this->userClass->isLogin()){
//注册为登录状态
$this->islogin=1;
$this->userinfo=@$this->userClass->getUserInfo();
}else{
$this->islogin=0;
unset($this->cookieData[sessionID]);
}
}
钱
2007/12/01 09:53 | by


