好久没有写了,平时上班,没啥兴趣了,周末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]);
  }
 }

Tags: ,
PHP日记 | 评论(0) | 引用(0) | 阅读(589)
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]