ホームページ  >  記事  >  バックエンド開発  >  PHP 権限設計ソリューションについて

PHP 権限設計ソリューションについて

WBOY
WBOYオリジナル
2016-06-13 13:33:27804ブラウズ

PHP 権限の設計について
説明: PHP 権限メニューを作成し、異なるユーザーのログインに応じてデータベースから異なるメイン メニューとサブメニューを循環させたいと考えています
データベースの構造は次のとおりです
cfg_useraccount\Storage user information
cfg_role \Storage ロール information
cfg_resource \Storage menu information
cfg_permission \ロールが所有する権限

これで、次のときに取得したユーザー ID を使用して、ユーザーが所有するメイン メニューを取得できるようになりました。ログインする場合、ユーザーが所有するサブメニューを取得した場合、そのサブメニューは一般的にどのように処理されるのでしょうか?現時点では手がかりがありません
\select a.RoleID,b.ResourceName,b.URL from cfg_permission a join cfg_resource b on a.ResourceID=b.ResourceID where roleID in (select roleID from cfg_useraccount where username='admin') ;



PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
//数据库CIM
create database cim default charset=utf8;

//用户表
create table cfg_UserAccount
(
   ID int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
   UserName    varchar(20),
   PassWord    varchar(20),
   MobilePhone varchar(20),
   CreateTM    varchar(20),
   UpdateTM    varchar(20),
   RoleID     int(4)
) DEFAULT CHARSET=UTF8;
//数据格式及插入测试数据
insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('admin','111111','15957118564','2011-12-30','10');
insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('刘成','111111','15957118564','2011-12-30','20');
insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('邹琼芳','111111','13735862872','2011-12-30','30');


//角色表
create table cfg_Role
(
   RoleID int(4),
   RoleName varchar(20),
   Remark    varchar(20)
)DEFAULT CHARSET=UTF8;
//插入测试数据
insert into cfg_Role(RoleID,RoleName,Remark) values('10','超级管理员','具有系统所有权限');
insert into cfg_Role(RoleID,RoleName,Remark) values ('20','技术部','具有客服管理等权限');
insert into cfg_Role(RoleID,RoleName,Remark) values('30','部门经理','具有修改资料的权限');
insert into cfg_Role(RoleID,RoleName,Remark) values('40','财务经理','统计考勤及奖金');

 
//资源表
create table cfg_Resource
(
ResourceID     int(4),
ResourceName   varchar(20),
Remark         varchar(20),
URL            varchar(100),
);

insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('100','客服管理','对日常客服记录进行管理','SeviceManager.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('101','客服子菜单1','对日常客服记录进行管理','SeviceManager.php?action=add');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('102','客服子菜单2','对日常客服记录进行管理','SeviceManager.php?action=del');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('200','会员管理','会员新增和查询','MemberService.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('300','查询管理','查询管理','Search.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('400','回访管理','对客服记录进行回访','Visit.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('500','知识库','产品FAQ','Knowledge.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('600','数据管理','数据备份统计相关','Backup.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('700','硬件返修','硬件产品返修','Repair.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('800','系统管理','系统管理相关','System.php');


create table cfg_Permission
(
RoleID int(4),
ResourceID int(4)
)

//权限表
insert into cfg_Permission (RoleID,ResourceID) values('10','100');
insert into cfg_Permission (RoleID,ResourceID) values('10','200');
insert into cfg_Permission (RoleID,ResourceID) values('10','300');
insert into cfg_Permission (RoleID,ResourceID) values('10','400');
insert into cfg_Permission (RoleID,ResourceID) values('10','500');
insert into cfg_Permission (RoleID,ResourceID) values('10','600');
insert into cfg_Permission (RoleID,ResourceID) values('10','700');
insert into cfg_Permission (RoleID,ResourceID) values('10','800');





------解決策------- -------------
いくつかの提案

1. テーブルは 1 つにマージされるようです
2. session
に値を割り当て、メニュー/サブメニューのコンテンツ

を含む権限に基づいて権限を判断します。 もちろん、これは、php による「読み取り」ではなく、if を使用する必要があります。 mysql.

許可判定をクラスに記述し、別のファイルをインクルードします。
------解決策----------------------
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。