欧美日韩一区二区三区四区不卡,日韩欧美视频一区二区三区四区,久久精品欧美一区二区三区不卡,国产精品久久久乱弄

咨詢電話:186 7916 6165 咨詢電話:186 7916 6165 (微信同號)    在線QQ:181796286
NEWS BLOG ·
學(xué)無止境
關(guān)注開優(yōu)網(wǎng)絡(luò) 關(guān)注前沿
PHP Web開發(fā)之ThinkPHP框架
PHP Web開發(fā)之無限級分類

PHP Web開發(fā)之權(quán)限模塊

發(fā)表日期:2015-10-25    文章編輯:南昌開優(yōu)網(wǎng)絡(luò)    瀏覽次數(shù):5051    標(biāo)簽:PHP應(yīng)用

1、找到Thinkphp原文件中的Examples\Rbac\Conf中的配置RBAC
     'USER_AUTH_ON'              =>true,
        'USER_AUTH_TYPE'    =>1,// 默認(rèn)認(rèn)證類型 1 登錄認(rèn)證 2 實時認(rèn)證
        'USER_AUTH_KEY'             =>'authId',// 用戶認(rèn)證SESSION標(biāo)記
        'ADMIN_AUTH_KEY'     =>'administrator',
        'USER_AUTH_MODEL'           =>'User',// 默認(rèn)驗證數(shù)據(jù)表模型.用戶表
        'AUTH_PWD_ENCODER'          =>'md5',// 用戶認(rèn)證密碼加密方式
        'USER_AUTH_GATEWAY'         =>'/Public/login',// 默認(rèn)認(rèn)證網(wǎng)關(guān)
        'NOT_AUTH_MODULE'           =>'Public',// 默認(rèn)無需認(rèn)證模塊
        'REQUIRE_AUTH_MODULE'       =>'',// 默認(rèn)需要認(rèn)證模塊
        'NOT_AUTH_ACTION'           =>'',// 默認(rèn)無需認(rèn)證操作
        'REQUIRE_AUTH_ACTION'       =>'',// 默認(rèn)需要認(rèn)證操作
        'GUEST_AUTH_ON'             =>false,    // 是否開啟游客授權(quán)訪問
        'GUEST_AUTH_ID'             =>0,        // 游客的用戶ID
        'RBAC_ROLE_TABLE'           =>'think_role',
        'RBAC_USER_TABLE'           =>'think_role_user',
        'RBAC_ACCESS_TABLE'         =>'think_access',
        'RBAC_NODE_TABLE'           =>'think_node',

2、創(chuàng)建表
CREATE TABLE IF NOT EXISTS `think_access` (//角色權(quán)限表
  `role_id` smallint(6) unsigned NOT NULL,//角色id
  `node_id` smallint(6) unsigned NOT NULL,//節(jié)點(diǎn)id,必須是先可以訪問項目->模塊->方法
  `level` tinyint(1) NOT NULL,//節(jié)點(diǎn)表中的level字段相同
  `module` varchar(50) DEFAULT NULL,//模塊名稱.可以不寫
  `pid` int,//節(jié)點(diǎn)表中的pid字段相同
  KEY `groupId` (`role_id`),
  KEY `nodeId` (`node_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `think_node` (//節(jié)點(diǎn)表
  `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,//id
  `name` varchar(20) NOT NULL,//項目名稱、模塊名稱、方法名稱,一定要對應(yīng)項目中的名稱
  `title` varchar(50) DEFAULT NULL,//節(jié)點(diǎn)描述.可以不寫
  `status` tinyint(1) DEFAULT '0',//節(jié)點(diǎn)狀態(tài):'1'為開啟
  `remark` varchar(255) DEFAULT NULL,//詳細(xì)描述.可以不寫
  `sort` smallint(6) unsigned DEFAULT NULL,//節(jié)點(diǎn)排序.可以不寫
  `pid` smallint(6) unsigned NOT NULL,//父節(jié)點(diǎn):即該名稱的父級id
  `level` tinyint(1) unsigned NOT NULL,//節(jié)點(diǎn)分級:'1'為項目,'2'為模塊,'3'為方法
  PRIMARY KEY (`id`),
  KEY `level` (`level`),
  KEY `pid` (`pid`),
  KEY `status` (`status`),
  KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `think_role` (//角色表
  `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,//id
  `name` varchar(20) NOT NULL,//角色名稱
  `pid` smallint(6) DEFAULT NULL,//父級id
  `status` tinyint(1) unsigned DEFAULT NULL,//狀態(tài):'1'為開啟
  `remark` varchar(255) DEFAULT NULL,//說明
  PRIMARY KEY (`id`),
  KEY `pid` (`pid`),
  KEY `status` (`status`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

CREATE TABLE IF NOT EXISTS `think_role_user` (//用戶角色表
  `role_id` mediumint(9) unsigned DEFAULT NULL,//角色id
  `user_id` char(32) DEFAULT NULL,//用戶id
  KEY `group_id` (`role_id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

create table think_user(//用戶表...自定義
id int not null primary key auto_increment,
username varchar(20) not null,
password varchar(32) not null
.......
)
3、在Lib\Action中創(chuàng)建CommonAction.class.php 并初使化接口
class CommonAction extends Action{
function _initialize() {
        // 用戶權(quán)限檢查
        if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {//讀取配置文件判斷是否開啟權(quán)限驗證
            import('ORG.Util.RBAC');//導(dǎo)入RBAC.class.php文件
            if (!RBAC::AccessDecision()) {
                //檢查認(rèn)證識別號
                if (!$_SESSION [C('USER_AUTH_KEY')]) {
                    //跳轉(zhuǎn)到認(rèn)證網(wǎng)關(guān)
                    redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
                }
                // 沒有權(quán)限 拋出錯誤
                if (C('RBAC_ERROR_PAGE')) {
                    // 定義權(quán)限錯誤頁面
                    redirect(C('RBAC_ERROR_PAGE'));
                } else {
                    if (C('GUEST_AUTH_ON')) {
                        $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                    }
                    // 提示錯誤信息
                    $this->error(L('_VALID_ACCESS_'));
                }
            }
        }
    }
}
4、創(chuàng)建PublicAction.class.php 
class PublicAction extends Action{
function index(){
$this->login();
}
function login(){
$this->display('./Public/login.html');
}
function checkLogin(){
if(empty($_POST['username'])) {
$this->error('帳號錯誤!');
}elseif (empty($_POST['password'])){
$this->error('密碼必須!');
}
//elseif (empty($_POST['verify'])){
//$this->error('驗證碼必須!');
//}
        //生成認(rèn)證條件
        $map            =   array();
// 支持使用綁定帳號登錄
$map['username ']= $_POST['username'];
     
//if($_SESSION['verify'] != md5($_POST['verify'])) {
//$this->error('驗證碼錯誤!');
//}
import ( 'ORG.Util.RBAC' );
        $authInfo = RBAC::authenticate($map);
        //使用用戶名、密碼和狀態(tài)的方式進(jìn)行認(rèn)證
        if(false === $authInfo) {
            $this->error('帳號不存在或已禁用!');
        }else {
            if($authInfo['password'] != md5($_POST['password'])) {
            $this->error('密碼錯誤!');
            }
            $_SESSION[C('USER_AUTH_KEY')]=$authInfo['id'];           
            if($authInfo['username']=='admin') {
            $_SESSION['administrator']=true;
            }
// 緩存訪問權(quán)限
            RBAC::saveAccessList();
$this->success('登錄成功!');

}
}
function loginout(){
if(isset($_SESSION[C('USER_AUTH_KEY')])) {
unset($_SESSION[C('USER_AUTH_KEY')]);
unset($_SESSION);
session_destroy();
            $this->assign("jumpUrl",__URL__.'/login/');
           $this->success('登出成功!');
        }else {
           $this->error('已經(jīng)登出!');
        }
}
}
5、創(chuàng)建前臺登錄頁login.html
<form action="__URL__/checkLogin" method="POST">
用戶名<input type="text" name="username"><br>
密碼<input type="password" name="password"><br>
<input type="submit" value="登錄">
</form>
6、到ThinkPHP原代碼中找到success.html文件提示信息頁復(fù)制到項目admin\Tpl\default\Public文件夾中.注要先創(chuàng)建Public文件夾
主站蜘蛛池模板: 北川| 灵武市| 江阴市| 清涧县| 嘉鱼县| 云林县| 左云县| 四平市| 乐平市| 新民市| 三明市| 黎城县| 沽源县| 六枝特区| 佛山市| 余干县| 建德市| 永登县| 磐安县| 仁怀市| 新巴尔虎右旗| 潞西市| 藁城市| 奉节县| 滦南县| 镇江市| 潮州市| 马关县| 图木舒克市| 凌云县| 普安县| 伊通| 霍城县| 融水| 信阳市| 甘肃省| 汕头市| 都江堰市| 浏阳市| 安龙县| 福建省|