ThinkPHP后台设置,ThinkPHP权限配置及后台功能
            
            
                今天在做那个ThinkPHP后台登录验证的时候遇到这个问题,在多个后台项目和前台项目共同在根目录下如何来判断是否有权限。
看如果代码,作者是将后台和前台放到不同的目录下的,后台所有操作在一个项目下,前台也是在一个目录下,作者用的是调用公共方法,代码如下:
[php]
class GlobalAction extends Action{
	private $groupId;
	private $userId;
	private $userName;
	function _initialize()
	{
		//初始化时获取用户ID和用户组ID
		$this->groupId=intval(Session::get('groupid'));
		$this->userId=intval(Session::get(C('USER_AUTH_KEY')));
		$this->userName=Session::get('username');
		//dump($this->groupId);
		/*
		限制允许进入后台的用户组,默认禁用此功能
		$allowAdmin=array(1,2);
		if(!isset($_SESSION[C('USER_AUTH_KEY')]) || !in_array($this->groupId,$allowAdmin,true) )
		*/
		if($this->userId==false ||$this->groupId==false )
		{
			$this->redirect('login','Public');
		}
	}
	/*
		获取用户ID
	*/
	Protected function getUid(){
		//$uid=intval($_SESSION[C('USER_AUTH_KEY')]);
		return $this->userId;
	}
	/*
		获取用户组ID
	*/
	Protected function getGid(){
		//$gid=intval($_SESSION['groupid']);
		return $this->groupId;
	}
	/*
		获取用户名
	*/
	Protected function getName(){
		//$gid=intval($_SESSION['groupid']);
		return $this->userName;
	}
}
[/php]
然后根据class IndexAction extends GlobalAction{}这个来判断的
在看另外一个,根据RBAC来做的:
[php]
<?php
if (!defined('THINK_PATH')) exit();
$config	= require '../config.php';
$array = array(
        'SESSION_AUTO_START'		=>	true,
        'USER_AUTH_ON'              =>	true,
        'USER_AUTH_TYPE'			=>	1,		// 默认认证类型 1 登录认证 2 实时认证
        'USER_AUTH_KEY'             =>	'authId',	// 用户认证SESSION标记
        'ADMIN_AUTH_KEY'			=>	'admin',
        'USER_AUTH_MODEL'           =>	'User',	// 默认验证数据表模型
        'AUTH_PWD_ENCODER'          =>	'md5',	// 用户认证密码加密方式
        'USER_AUTH_GATEWAY'         =>	'/Pub/login',// 默认认证网关
        'NOT_AUTH_MODULE'           =>	'Pub',	// 默认无需认证模块
        'REQUIRE_AUTH_MODULE'       =>	'',		// 默认需要认证模块
        'NOT_AUTH_ACTION'           =>	'',		// 默认无需认证操作
        'REQUIRE_AUTH_ACTION'       =>	'',		// 默认需要认证操作
        'GUEST_AUTH_ON'             =>	false,    // 是否开启游客授权访问
        'GUEST_AUTH_ID'             =>	0,        // 游客的用户ID
//        'DB_LIKE_FIELDS'            =>	'title|remark',
        'RBAC_ROLE_TABLE'           =>	'dlb_role',
        'RBAC_USER_TABLE'           =>	'dlb_role_user',
        'RBAC_ACCESS_TABLE'         =>	'dlb_access',
        'RBAC_NODE_TABLE'           =>	'dlb_node',
        'SHOW_PAGE_TRACE'			=>	0,			//显示调试信息
//        'DB_CASE_LOWER'			=>	true,			//查询数组键值转换为小写
		//自定义配置,是否系统管理员,默认不是
		'IS_SYS_ADMIN'				=> 'is_admin',
		'ADMIN_USER_TYPE'			=> 'user_type',
        );
return array_merge($config,$array);
[/php]
前面一种好理解,后面一种就不是很清楚。