自己动手写 权限管理?php/** * Acl 权限管理接口 * * @author 色色 */interface App_Api_Acl {/** * 用户
自己动手写 权限管理
<?php/** * Acl 权限管理接口 * * @author 色色 */interface App_Api_Acl {/** * 用户 */const __USER__ = 'iwp.acl.users';/** * 角色 */const __ROLE__ = 'iwp.acl.roles';/** * 资源 */const __RESOURCE__ = 'iwp.acl.resources';/** * 用户-角色 */const __USERS_HAS_ROLES__ = 'iwp.acl.users_has_roles';/** * 角色-资源 */const __ROLES_HAS_RESOURCES__ = 'iwp.acl.roles_has_resources';/** * 不允许任何人访问 */const NOBODY = 0;/** * 允许任何人访问 */const EVERYONE = 1;/** * 允许 拥有角色的用户访问 */const HAS_ROLE = 2;/** * 允许 不带有角色的用户访问 */const NO_ROLE = 3;/** * 在 资源-角色关联 定义的 角色才能访问 */const ALLOCATE_ROLES = 4;/** * 创建资源,返回资源记录主键 * * 要检查 $uuid 是否唯一,如果不唯一,则应抛出 Core_Exception_SqlPrimaryKeyExists 异常 * * @param string $uuid * @param int $access * @param string $description * * @return int */function createResource($uuid,$access,$description);/** * 修改资源,返回成功状态 * * 修改时不能 修改 资源的 uuid 和 主键编号 * * @param array $resource * * @return int */function updateResource(array $resource);/** * 删除资源 * * 相应的也要解除其与角色的关系 * * @param string $uuid * * @return int */function deleteResource($uuid);/** * 创建角色,返回角色记录主键 * * 要检查 $rolename 是否唯一,如果不唯一,则应抛出 Core_Exception_SqlPrimaryKeyExists 异常 * * @param string $rolename * @param string $description * * @return int */function createRole($rolename,$description);/** * 修改角色,返回成功状态 * * 修改时不能 修改 角色名 和 主键编号 * * @param array $role * * @return int */function updateRole(array $role);/** * 删除角色 * * 相应的也要解除其与资源的关系 * * @param int $role_id * * @return int */function deleteRole($role_id);/** * 为资源指定角色,每次均先全部移除表中相关记录再插入 * * @param string $uuid * @param mixed $role_ids * @param boolean $set_null 是否使用Acl内置的访问授权来设置该资源,此举将会清空该uuid对应的{角色-资源}的关联记录 * @param int $default_access 指定访问授权的值 * * @return boolean */function allocateRolesForResource($uuid,$role_ids,$set_null=false,$default_access=-1);/** * 清除指定资源的角色信息 * * @param string $uuid * * @return int */function cleanRolesForResource($uuid);/** * 清除指定角色的资源访问列表 * * @param int $role_id * * @return int */function cleanResourcesForRole($role_id);/** * 为角色分配资源,每次均先全部移除表中相关记录再插入 * * @param int $role_id * @param mixed $uuid_ids * * @return boolean */function allocateResourcesForRole($role_id,$uuid_ids);/** * 为用户指派角色,每次均先全部移除表中相关记录再插入 * * @param int $user_id * @param mixed $role_ids * * @return boolean */function allocateRolesForUser($user_id,$role_ids);/** * 清除用户的角色信息 * * @param int $user_id * * @return int */function cleanRolesForUser($user_id);/** * 解除指定角色的用户关联 * * @param int $role_id * * @return int */function cleanUsersForRole($role_id);/** * 校验资源能否被指定的角色列表访问(只需满足某一个角色能够访问就行) * * @param string $uuid 资源标识 * @param array $role_ids * * @return boolean */function aclVerity($uuid ,array $role_ids = null);/** * 重新生成 角色资源访问控制表 * * @param string $aclElement ACL元素标识 * @param boolean $return 是否返回重新生成的列表 * * @return mixed */function aclRebuildACT($aclElement ,$return = false);/** * 获取 角色资源访问控制表 数据 * * @param string $aclElement ACL元素标识 * * @return mixed */function aclGetACT($aclElement);/** * 获取 资源 记录 * * @param string|array $uuid * * @return array */function aclGetResource($uuid);/** * 获取 角色 记录 * * @param int|array $role_id * * @return array */function aclGetRole($role_id);/** * 如果 角色与资源关联,就返回对应的数据,否则返回空; * * 此方法可以校验资源是否可被此角色访问 * * @param int $role_id * @param string $uuid * * @return array */function aclGetRoleHasResource($role_id,$uuid);///**// * 获取 角色能够访问的资源集合// * // * @param int $role_id// * // * @return array// *///function aclGetResourcesByRoleId($role_id);/** * 获取 资源被赋予的角色集合 * * @param array $resource * * @return array */function aclGetRolesByResource(array $resource);}? 1 楼 vb2005xu 2012-03-13 http://www.cmd5.com/service.aspx md5解密 2 楼 vb2005xu 2012-03-31 http://blog.csdn.net/painsonline/article/details/7183629 权限管理实现 