看过了,学习。以前做的时候,没这么想过。我一般用session解决。
Mysql数据库中user表,有group字段,ENUM类型,值为:user:普通用户
admin:管理员
guest:匿名用户用户登录成功后,将group字段值写入session。网站部分页面完全公开,部分页面需要user权限,还有guest帐号可访问的一些页面,管理页面判断session['group']值是否为admin。当然,guest可以访问的页面user、admin也完全可以。我感觉用session比较方便。具体做法是写一个PHP脚本,根据取得的文件名判断。将此页面包含在配置文件中。不足之处,多多指教。

解决方案 »

  1.   

    难得这里有一个像样的贴子。楼主的思路没错,以前我也把它应用在普通的内部系统的用户角色模块中。但它的缺点也明显的,不能用作论坛的权限系统,只能控制精确到论坛版块的控制刻度,难以细致到贴子。以前我也想弄个通用的权限系不过一直不成功,看了比较成功成熟的java方面的应用,每个大的系统都是有自己的权限系统,没有通用。难道真的没有?
      

  2.   

    http://community.csdn.net/Expert/topic/3301/3301579.xml?temp=4.157656E-02这的通用权限系统。
      

  3.   

    To mrshelly(Shelly):您的设计思路跟这个没区别,我暂时不能理解到您的设计:用通用系统(适用于任何web系统包括oa、bbs and so on)解决我上面提到的论坛里面权限问题(细致到贴子级别),如果确信可以的话,请给出概要说明即可,先谢了。
      

  4.   

    这种方法不错,不过我有一些疑问,
    如果你的application.php不是整个程序入口的controller,
    那也不是要在每个页面文件上都要
     require_once "filter.php";
     authorization();
    .....
    还有就是为什么要递归判断上层路径?
      

  5.   

    to unixdotnet(byopen) :论坛是个很特殊的东西,如果要用到论坛上,稍微变换一下思路就可以,论坛是基于action,所以要建立的是action到function函数的对应关系,同时还要附加几个条件就可以了,"reply.php"=>array('func'=>'havePower', 'powerSet'=>'数据库中该权限的标识', 'method'=>"POST/GET")这样就可以了。to ice_berg16(寻梦的稻草人) :
    在php.ini中可以配置一个选项,就是配置在加载每个页面的时候都要首先加载一个文件
    把这个文件的内容定义如下就可以了。
    <?
     require_once "filter.php";
     authorization();
    ?>---------------------------
    条条道路通罗马,最重要的思路,和变通。灵活的变通,万变不离其中。
      

  6.   

    To hahawen(变态的大龄青年):您现在的做法就是采用基于请求(action)文件地址的验证方式。以您给出的reply.php为例:假设reply.php为回复贴子的处理文件,id为1的贴子只能由拥有r角色的组别的用户回复,现时有a、b组别,只有a组别拥有r角色,u1为a组别用户,u2为b组别用户。那么请问您是如何变通地验证权限?是否需要另外建表?如果需要的话,可能其它系统如发布系统没有此要求,那是否真的通用?优待您的指点提高。
      

  7.   

    to unixdotnet(byopen) :  首先需要整理和抽象reply需要的验证机制,有几种情况,每一种情况分别写函数或函数的判断分支,根据判断条件来调用对应的函数或分支,这个要有具体的限定关系才能进行对的设计。
      

  8.   

    To hahawen(变态的大龄青年):请问真的只能按您说的“首先需要整理和抽象reply需要的验证机制,有几种情况,每一种情况分别写函数或函数的判断分支,根据判断条件来调用对应的函数或分支,这个要有具体的限定关系才能进行对的设计”吗?如果是真的话,那就不是真正通用权限系统了,需要根据不同的应用做出变化,您别让我空欢喜一场吧。
      

  9.   

    to unixdotnet(byopen) :    呵呵,网站不会有太复杂的权限管理,所以,没有必要太细化这个问题。如果真的说细了,根本就不可能有彻底通用的权限管理系统。    而且我只是说了“php页面访问时,统一进行权限验证的设计 ”,是统一,不是通用。统一是为了权限的管理和分配,和通用好像不是一个概念。
      

  10.   

    没有那么简单肤浅的,类只是表现,关键是怎么设计出通用来的,请问您能确保您的验证类无需修改即可适合于任何web系统吗?
      

  11.   

    所有权限
        发贴权限
           在XX版发贴权限
              在XX版发XXX字节的权限
              在XX版发XXX2字节的权限权限是一个树形结构(无限级分类) 你想怎么细分都成。~~~