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

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

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

發(fā)表日期:2015-10-25    文章編輯:南昌開優(yōu)網(wǎng)絡(luò)    瀏覽次數(shù):5030    標(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 實(shí)時(shí)認(rèn)證
        'USER_AUTH_KEY'             =>'authId',// 用戶認(rèn)證SESSION標(biāo)記
        'ADMIN_AUTH_KEY'     =>'administrator',
        'USER_AUTH_MODEL'           =>'User',// 默認(rèn)驗(yà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,必須是先可以訪問項(xiàng)目->模塊->方法
  `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,//項(xiàng)目名稱、模塊名稱、方法名稱,一定要對(duì)應(yīng)項(xià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):即該名稱的父級(jí)id
  `level` tinyint(1) unsigned NOT NULL,//節(jié)點(diǎn)分級(jí):'1'為項(xiàng)目,'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,//父級(jí)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)限驗(yàn)證
            import('ORG.Util.RBAC');//導(dǎo)入RBAC.class.php文件
            if (!RBAC::AccessDecision()) {
                //檢查認(rèn)證識(shí)別號(hào)
                if (!$_SESSION [C('USER_AUTH_KEY')]) {
                    //跳轉(zhuǎn)到認(rèn)證網(wǎng)關(guān)
                    redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
                }
                // 沒有權(quán)限 拋出錯(cuò)誤
                if (C('RBAC_ERROR_PAGE')) {
                    // 定義權(quán)限錯(cuò)誤頁面
                    redirect(C('RBAC_ERROR_PAGE'));
                } else {
                    if (C('GUEST_AUTH_ON')) {
                        $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                    }
                    // 提示錯(cuò)誤信息
                    $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('帳號(hào)錯(cuò)誤!');
}elseif (empty($_POST['password'])){
$this->error('密碼必須!');
}
//elseif (empty($_POST['verify'])){
//$this->error('驗(yàn)證碼必須!');
//}
        //生成認(rèn)證條件
        $map            =   array();
// 支持使用綁定帳號(hào)登錄
$map['username ']= $_POST['username'];
     
//if($_SESSION['verify'] != md5($_POST['verify'])) {
//$this->error('驗(yàn)證碼錯(cuò)誤!');
//}
import ( 'ORG.Util.RBAC' );
        $authInfo = RBAC::authenticate($map);
        //使用用戶名、密碼和狀態(tài)的方式進(jìn)行認(rèn)證
        if(false === $authInfo) {
            $this->error('帳號(hào)不存在或已禁用!');
        }else {
            if($authInfo['password'] != md5($_POST['password'])) {
            $this->error('密碼錯(cuò)誤!');
            }
            $_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)建前臺(tái)登錄頁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ù)制到項(xiàng)目admin\Tpl\default\Public文件夾中.注要先創(chuàng)建Public文件夾
主站蜘蛛池模板: 秭归县| 桓台县| 天水市| 方城县| 成都市| 合阳县| 乐亭县| 黄陵县| 柯坪县| 维西| 五华县| 荃湾区| 惠来县| 泌阳县| 肃宁县| 宁南县| 抚顺县| 玛曲县| 博客| 黄石市| 麟游县| 郁南县| 米林县| 五常市| 白河县| 财经| 鱼台县| 北流市| 甘德县| 苗栗县| 庆城县| 福贡县| 镇坪县| 沙洋县| 横峰县| 瓦房店市| 塘沽区| 阿克苏市| 宣威市| 沅陵县| 二连浩特市|