class Acl

权限控制类

对方法注释 @noacl 则不检查该方法的权限 对方法注释 @acljump web/User/add 则将当前方法的权限检查跳转为检查 web/User/add方法的权限 加到normal.php配置中 //权限控制配置 'administratorid'=>'1', //超管理员id

建库语句

CREATE TABLE pr_admin_app ( id smallint(6) unsigned NOT NULL AUTOINCREMENT, name varchar(255) NOT NULL DEFAULT '' COMMENT '应用名', PRIMARY KEY (id) ) ENGINE=InnoDB AUTOINCREMENT=1 DEFAULT CHARSET=utf8mb4;

CREATE TABLE pr_admin_access ( id int(11) NOT NULL AUTOINCREMENT COMMENT '权限ID', userid int(11) unsigned NOT NULL DEFAULT '0' COMMENT '所属用户权限ID', groupid int(11) unsigned NOT NULL DEFAULT '0' COMMENT '所属群组权限ID', menuid int(11) NOT NULL DEFAULT '0' COMMENT '权限模块ID', PRIMARY KEY (id), KEY idx_userid (userid), KEY idx_groupid (groupid) ) ENGINE=InnoDB AUTOINCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户或者用户组权限记录';

CREATE TABLE pr_admin_groups ( id smallint(3) unsigned NOT NULL AUTOINCREMENT, name varchar(150) NOT NULL DEFAULT '' COMMENT '用户组名', status tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '1正常,0删除', remark text NOT NULL COMMENT '备注', PRIMARY KEY (id) ) ENGINE=InnoDB AUTOINCREMENT=1 DEFAULT CHARSET=utf8mb4;

CREATE TABLE pr_admin_menus ( id int(11) NOT NULL AUTOINCREMENT COMMENT '自增id', pid int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父模块ID编号 0则为顶级模块', title varchar(64) NOT NULL DEFAULT '' COMMENT '标题', url varchar(64) NOT NULL DEFAULT '' COMMENT 'url路径', params varchar(64) NOT NULL DEFAULT '' COMMENT 'url参数', isshow tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否显示', sort smallint(3) unsigned NOT NULL DEFAULT '0' COMMENT '排序倒序', app smallint(6) unsigned NOT NULL DEFAULT '0' COMMENT '菜单所属app,对应app表中的主键', PRIMARY KEY (id), KEY idex_pid (pid), KEY idex_order (sort), KEY idx_action (url), KEY idx_app (app) ) ENGINE=InnoDB AUTOINCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限模块信息表';

CREATE TABLE pr_admin_users ( id int(11) unsigned NOT NULL AUTOINCREMENT COMMENT '自增id', groupid varchar(255) NOT NULL DEFAULT '0' COMMENT '用户组id', username varchar(40) NOT NULL DEFAULT '' COMMENT '用户名', nickname varchar(50) NOT NULL DEFAULT '' COMMENT '昵称', password char(32) NOT NULL DEFAULT '' COMMENT '密码', lastlogin int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最后登录时间', ctime int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', stime int(10) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间', status tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '1正常,0删除', remark text NOT NULL, from_type tinyint(3) unsigned DEFAULT '1' COMMENT '用户类型。1为系统用户。', PRIMARY KEY (id), UNIQUE KEY username (username) ) ENGINE=InnoDB AUTOINCREMENT=1 DEFAULT CHARSET=utf8mb4;

Properties

static array $aclNames 有权限的时候保存权限的显示名称用于记录log
static null $authUser 当前登录的用户信息

Methods

static 
setEncryptKey( string $key)

设置加密用的混淆key Cookie::set本身有一重加密 这里再加一重

static 
setTableName( string|array $type = 'access', string $tableName = 'access')

自定义表名

static  mixed
getTableName( string $type = 'access')

获取表名

static 
setLoginStatus( int $uid, bool $sso = true, int $cookieExpire, int $notOperationAutoLogin = 3600)

保存当前登录用户的信息

static  array
getLoginInfo()

获取当前登录用户的信息

static  int
checkAcl( object|string $controller)

检查对应的权限

static  array
getMenus( bool $format = true, string $columns = '')

获取有权限的菜单列表

static 
logout()

登出

static  bool
isSuperUser()

判断当前登录用户是否为超级管理员

Details

at line line 134
static setEncryptKey( string $key)

设置加密用的混淆key Cookie::set本身有一重加密 这里再加一重

Parameters

string $key

at line line 145
static setTableName( string|array $type = 'access', string $tableName = 'access')

自定义表名

Parameters

string|array $type
string $tableName

at line line 160
static mixed getTableName( string $type = 'access')

获取表名

Parameters

string $type

Return Value

mixed

at line line 177
static setLoginStatus( int $uid, bool $sso = true, int $cookieExpire, int $notOperationAutoLogin = 3600)

保存当前登录用户的信息

Parameters

int $uid 用户id
bool $sso 是否为单点登录,即踢除其它登录用户
int $cookieExpire 登录的过期时间,为0则默认保持到浏览器关闭,> 0的值为登录有效期的秒数。默认为0
int $notOperationAutoLogin 当$cookieExpire设置为0时,这个值为用户多久不操作则自动退出。默认为1个小时

at line line 202
static array getLoginInfo()

获取当前登录用户的信息

Return Value

array

at line line 270
static int checkAcl( object|string $controller)

检查对应的权限

Parameters

object|string $controller 传入控制器实例对象,用来判断当前访问的方法是不是要跳过权限检查。 如当前访问的方法为web/User/list则传入new \web\Controller\User()获得的实例。最常用的是在基础控制器的init方法或构造方法里传入$this。 传入字符串如web/User/list时会自动 new \web\Controller\User()获取实例用于判断

Return Value

int 返回1是通过检查,0是不能通过检查

at line line 355
static array getMenus( bool $format = true, string $columns = '')

获取有权限的菜单列表

Parameters

bool $format 是否格式化返回
string $columns 要额外获取的字段

Return Value

array

at line line 392
static logout()

登出

at line line 404
static bool isSuperUser()

判断当前登录用户是否为超级管理员

Return Value

bool