|
目录
角色与权限1.编写代码的问题(1)seagull框架中默认有三种角色:guest,member,admin.下面介绍这三种角色的用户
除了那些还需要说的是: * roles映射到存放在Manager类中action方法,即,如果你有一个Piggy Mgr类,action方法如下:goesToMarket(),_staysHome()和_eatsRoastBeef(),则在系统中,必须给每一个方法增加对应的权限项.以便于用户权限的管理. * 在系统中可以有任何数量的权限项/角色 * 角色可以被复制 (2)方法的调用 调用某一个类的方法都需要验证用户是否有权限使用这个方法,代码如下: if (SGL_HTTP_Session::hasPerms($perm)) { $this->$methodName($input, $output); } else { Base::raiseError('you do not have the required perms for ' . $className . '::' .$methodName, SGL_ERROR_INVALIDMETHODPERMS); }} function hasPerms($permId) { // if admin role, give perms by default if (@$_SESSION['rid'] == 1) { $ret = true; } else { if (is_array($_SESSION['aPerms'])) { $ret = in_array($permId, $_SESSION['aPerms']); //验证已创建的全局权限数据是否包含该方法 } else { $ret = false; } } return $ret; } SGL_Controller::_initPerms()方法调用PermissionMgr.php类中的retrieveAllPerms()方法,retrieveAllPerms()方法在第一次请求时,全局权限数组就已创建的.倘若你缓存被激活,到那时隐藏数据到磁盘作为后来的调用. 2.权限2.1.命名约定命名约定是modulmgr_function. 因为faq模块中的权限项如:
一个方法一个权限 2.2.模块范围的权限如果你想准许一些用户有权使用一个模块的所有方法,你必须调用它modulmgr,再已faq模块为例,它将是faqmgr. 2.3.添加权限使用detect & add函数,你可以很容易地为系统添加权限. 它扫描所有已安装的模块,并输出一系列新的权限,你可以通过少数的鼠标点击来添加它们. 2.4.删除孤儿权限使用删除孤儿函数是相当简单的.它将显示一系列旧的权限,你可以通过少数的鼠标点击来删除. 3.角色3.1.创建角色一个角色仅仅是某些权限的一个组,当创建新的用户时,这个新的用户就采纳了所属角色‘模板’的所有权限,然后你可以根据需要增加或删除这个用户的个别的权限项.注意:当一个角色的权限改变时,已创建的用户的权限不会随之改变. 为站点创建新的角色,只要使用Users and Security模块的Role部分的工具.很简单的:
注意:admin按钮在页面的顶端,有时被导航栏隐藏 - 你或许只能修改默认的导航栏 3.2.同步权限已被更新的用户由于它所包含的是权限而不是角色,它被保存到基于每个用户,修改权限后,你必须同步用户的角色. 使用角色与权限同步的功能就可以执行. 你可以选择要你要同步的用户,如果你将他们同步到当前或其它的角色,或你想添加丢失的权限,删除额外的权限或两者兼有. 3.3.将文章中应用权限Q:是否有方法控制文章分类的权限? A:权限管理,组成Publisher模块的一部分.你基本上需要决定你的文章以哪种分类发表,点击'permissions'按钮,然后删除没有权限访问给定分类的角色.此时,这种方法只适合浏览文章,不适合编辑. |