文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>FleaPHP的RDBC功能齐全,确是开发Web后台程序控制的不二选择

FleaPHP的RDBC功能齐全,确是开发Web后台程序控制的不二选择

时间:2007-09-25  来源:panzt

经过几小时的代码奋战,终于将FleaPHP的Rdbc功能搞定,非常开心,下面贴出成功权限控制的代码:


1、index.php
define('APP_DIR',dirname(__FILE__) .'/APP');
define('DEBUG_MODE',true);
require('FLEA/FLEA.php');
FLEA::setAppInf('RBACSessionKey','user');
set_app_inf('dispatcher', 'FLEA_Dispatcher_Auth');
FLEA::loadAppInf(APP_DIR .'/Config/DSN.php');
FLEA::import(APP_DIR);
FLEA::loadAppInf(dirname(__FILE__).'/include/function.php');    //加载一个应用程序
FLEA::loadAppInf(dirname(__FILE__) .'/include/Benchmark/Timer.php');
FLEA::setAppInf('dispatcherFailedCallback','displayFailedOtherCallback'); //自定义 无操作函数
FLEA::runMVC();

2、登陆函数
load_class('FLEA_Com_RBAC_UsersManager');
class MyUsersManager extends FLEA_Com_RBAC_UsersManager
{
    var $tableName = 'users';
    var $primaryKey = 'user_id';
    var $manyToMany = array(
        'tableClass' => 'MyRolesManager',
        'mappingName' => 'roles',
        'joinTable' => 'roles_users',
    );
}
/**
* 处理用户登录
*/
function login($username, $password) {
     $usersManager =& get_singleton('MyUsersManager');
     /* @var $usersManager MyUsersManager */

     // 验证用户名和密码是否正确
     $user = $usersManager->findByUsername($username);
     if (!$user || !$usersManager->checkPassword($password, $user[$usersManager->passwordField])) {
         error_message("用户名或密码错!");
     }

     // 获取用户角色信息
     $roles = $usersManager->fetchRoles($user);

     // 获得 FLEA_Com_RBAC 组件实例
     $rbac =& get_singleton('FLEA_Com_RBAC');
     /* @var $rbac FLEA_Com_RBAC */
  //dump($user);
     // 为了降低服务器负担,我们只在 session 中存储用户ID和用户名
     $sessionUser = array(
         'USERID' => $user[$usersManager->primaryKey],
         'USERNAME' => $user[$usersManager->usernameField],
         'REALNAME' => $user['realname'],
         'DEPOT' =>$user['depot'],
     );

     // 将用户ID、用户名和角色信息保存到 session
     $rbac->setUser($sessionUser, $roles);
     
     // 登录成功
     //error_message("用户".$user['realname'] ."在" .date(Ymd) ."成功登陆" .$user['depot']);
     //eturn $roles;
     return $_SESSION;
     
}

3、Default.act.php
return array(
    'allow' => RBAC_EVERYONE,
     'actions' => array(
          'index' => array(
                'allow' =>RBAC_EVERYONE,
              ),
          'certify' => array(
                'allow' =>RBAC_EVERYONE,
                ),
    ),
);

4、赋予角色权限
load_class('FLEA_Com_RBAC_RolesManager');
class MyRolesManager extends FLEA_Com_RBAC_RolesManager
{
    var $tableName = 'roles';
    var $primaryKey = 'role_id';
}
load_class('FLEA_Com_RBAC_UsersManager');
class MyUsersManager extends FLEA_Com_RBAC_UsersManager
{
    var $tableName = 'users';
    var $primaryKey = 'user_id';
    var $manyToMany = array(
        'tableClass' => 'MyRolesManager',
        'mappingName' => 'roles',
        'joinTable' => 'roles_users',
    );
}
$usersManager =& get_singleton('MyUsersManager');
/* @var $usersManager MyUsersManager */
// 取出用户
$user = $usersManager->findByUsername('LCR');
// 清空现有的角色信息
$user[$usersManager->rolesField] = array();
// 取出 POWER_USER 角色
$rolesManager =& get_singleton('MyRolesManager');
/* @var rolesManager MyRolesManager */
$role = $rolesManager->find(array('rolename' => 'POWER_USER'));
// 指定给用户
$user[$usersManager->rolesField][] = $role[$rolesManager->primaryKey];
// 取出 MANAGER 角色
$role = $rolesManager->find(array('rolename' => 'MANAGER'));
// 指定给用户
$user[$usersManager->rolesField][] = $role[$rolesManager->primaryKey];
// 保存修改后的用户信息
$usersManager->update($user);
// 重新从数据库读取用户信息,确定为用户指定的角色信息已经保存到数据库
$user = $usersManager->findByUsername('LCR');
dump($user);

在这之上加上一个后台控制就OK了。



相关阅读 更多 +
排行榜 更多 +
胜利女神新的希望小米服手游下载

胜利女神新的希望小米服手游下载

角色扮演 下载
我要当老板伐木工厂游戏下载

我要当老板伐木工厂游戏下载

模拟经营 下载
涡轮螺旋桨最新版下载

涡轮螺旋桨最新版下载

模拟经营 下载