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]
前面一种好理解,后面一种就不是很清楚。