<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        

      系統(tǒng)設(shè)計(jì)——權(quán)限系統(tǒng)

      前言:寫了兩篇關(guān)于DataGridView的文章:Winform系列——好用的DataGridview過濾控件(表格的高級(jí)搜索功能) 和 Winform系列——好看的DataGridView折疊控件。這章來記錄下權(quán)限系統(tǒng)。關(guān)于權(quán)限系統(tǒng),網(wǎng)上版本非常多,大都實(shí)用性不太高,大多數(shù)的系統(tǒng)就是因?yàn)榉值锰?xì)了反而使系統(tǒng)錯(cuò)綜復(fù)雜,甚至有看到有按照角色、部門、地區(qū)、用戶四個(gè)方便分別去做權(quán)限分配的,我的個(gè)神,這樣一來,要取一個(gè)用戶的權(quán)限那個(gè)麻煩,當(dāng)然并非說那些大神們封的東西不好,而是適用性的問題,對(duì)于某些大型公司的系統(tǒng),對(duì)權(quán)限要求確實(shí)有那么高也說不定,但其實(shí)根據(jù)本人工作幾年的經(jīng)驗(yàn)來看,大部分的.Net系統(tǒng)其實(shí)對(duì)權(quán)限的要求并沒有想象中的那么高。在這里記錄下自己從頭到尾設(shè)計(jì)和開發(fā)的一個(gè)權(quán)限系統(tǒng),個(gè)人覺得對(duì)于基本的權(quán)限分配夠用了。

      1、系統(tǒng)介紹:說是系統(tǒng),其實(shí)權(quán)限只是系統(tǒng)的一個(gè)模塊,此系統(tǒng)主要就是根據(jù)角色來分配權(quán)限的,通過角色分別控制用戶的菜單權(quán)限和菜單對(duì)應(yīng)頁面的按鈕權(quán)限。

       

      2、數(shù)據(jù)表設(shè)計(jì):

       (1)上圖

       

         (2)表的DDL語句:

      /*==============================================================*/
      /* DBMS name:      ORACLE Version 11g                           */
      /* Created on:     2015/6/15 11:55:21                           */
      /*==============================================================*/
      
      
      alter table TB_MenuRole
         drop constraint FK_TB_MENUR_REFERENCE_TB_ROLE;
      
      alter table TB_MenuRole
         drop constraint FK_TB_MENUR_REFERENCE_TB_MENU;
      
      alter table TB_UserRole
         drop constraint FK_TB_USERR_REFERENCE_TB_USERS;
      
      alter table TB_UserRole
         drop constraint FK_TB_USERR_REFERENCE_TB_ROLE;
      
      alter table TB_Users
         drop constraint FK_TB_USERS_REFERENCE_TB_DEPAR;
      
      drop table TB_Department cascade constraints;
      
      drop table TB_Menu cascade constraints;
      
      drop table TB_MenuRole cascade constraints;
      
      drop table TB_Role cascade constraints;
      
      drop table TB_UserRole cascade constraints;
      
      drop table TB_Users cascade constraints;
      
      /*==============================================================*/
      /* Table: "TB_Department"                                       */
      /*==============================================================*/
      create table TB_Department
      (
         department_id      VARCHAR(50)          not null,
         department_name    VARCHAR(50),
         parent_id         VARCHAR(50),
         department_level              VARCHAR(10),
         status             VARCHAR(10),
         constraint PK_TB_DEPARTMENT primary key (department_id)
      );
      
      /*==============================================================*/
      /* Table: "TB_Menu"                                             */
      /*==============================================================*/
      create table TB_Menu
      (
         menu_id            VARCHAR(50)          not null,
         menu_name          VARCHAR(50),
         menu_url           VARCHAR(50),
         parent_id          VARCHAR(50),
         menu_level              VARCHAR(10),
         sort_order         VARCHAR(50),
         status             VARCHAR(10),
         remark             VARCHAR(1000),
         constraint PK_TB_MENU primary key (menu_id)
      );
      
      /*==============================================================*/
      /* Table: "TB_MenuRole"                                         */
      /*==============================================================*/
      create table TB_MenuRole
      (
         id                 VARCHAR(50)          not null,
         role_id            VARCHAR(50),
         menu_id            VARCHAR(50),
         role_type          VARCHAR(10),
         button_id          VARCHAR(50),
         constraint PK_TB_MENUROLE primary key (id)
      );
      
      /*==============================================================*/
      /* Table: "TB_Role"                                             */
      /*==============================================================*/
      create table TB_Role
      (
         role_id            VARCHAR(50)          not null,
         role_name          VARCHAR(50),
         description        VARCHAR(500),
         createtime         DATE,
         modifytime         DATE,
         constraint PK_TB_ROLE primary key (role_id)
      );
      
      /*==============================================================*/
      /* Table: "TB_UserRole"                                         */
      /*==============================================================*/
      create table TB_UserRole 
      (
         id                 VARCHAR(50)          not null,
         role_id            VARCHAR(50),
         user_id            VARCHAR(50),
         constraint PK_TB_USERROLE primary key (id)
      );
      
      /*==============================================================*/
      /* Table: "TB_Users"                                            */
      /*==============================================================*/
      create table TB_Users 
      (
         user_id            VARCHAR(50)          not null,
         user_name          VARCHAR(50),
         user_password      VARCHAR(50),
         fullname           VARCHAR(50),
         department_id      VARCHAR(50),
         status             VARCHAR(10),
         createtime         DATE,
         modifytime         DATE,
         remark             VARCHAR(1000),
         constraint PK_TB_USERS primary key (user_id)
      );
      
      comment on table TB_Users is
      '用戶信息表';
      
      alter table TB_MenuRole
         add constraint FK_TB_MENUR_REFERENCE_TB_ROLE foreign key (role_id)
            references TB_Role (role_id);
      
      alter table TB_MenuRole
         add constraint FK_TB_MENUR_REFERENCE_TB_MENU foreign key (menu_id)
            references TB_Menu (menu_id);
      
      alter table TB_UserRole
         add constraint FK_TB_USERR_REFERENCE_TB_USERS foreign key (user_id)
            references TB_Users (user_id);
      
      alter table TB_UserRole
         add constraint FK_TB_USERR_REFERENCE_TB_ROLE foreign key (role_id)
            references TB_Role (role_id);
      
      alter table TB_Users
         add constraint FK_TB_USERS_REFERENCE_TB_DEPAR foreign key (department_id)
            references TB_Department (department_id);
      View Code

         (3) 表說明:權(quán)限模塊總共就6張表,即部門表、用戶表、角色表、用戶角色表、菜單表、菜單角色表(包含按鈕權(quán)限)。用戶表和角色表之間的關(guān)系是通用的多對(duì)多的關(guān)系,沒什么好說的。看看TB_MenuRole表,這個(gè)表用來存儲(chǔ)角色的菜單權(quán)限和按鈕權(quán)限,其中role_type取值為menu和button,如果是menu,則此行記錄用于存儲(chǔ)菜單權(quán)限,button_id為空;如果是button,則此行記錄用于存儲(chǔ)菜單下的某一個(gè)按鈕的權(quán)限,menu_id為按鈕所在的菜單id,button_id為對(duì)應(yīng)的按鈕id。還有一個(gè)問題就是按鈕的id從哪里來?是否還應(yīng)該有一個(gè)儲(chǔ)存按鈕ID的表呢?答案是不需要,后面會(huì)介紹。

       

      3、效果圖:先做的是一個(gè)CS的系統(tǒng),后續(xù)還會(huì)做BS的。

      3.1 權(quán)限模塊主要分為4大頁面:用戶管理、角色管理、部門管理和菜單管理

      3.2 用戶管理頁面:

      “設(shè)置角色”操作:

       

      3.3 角色管理頁面:

       

      “編輯權(quán)限”操作:

      在“編輯權(quán)限”彈出框中點(diǎn)擊“設(shè)置按鈕操作”

      角色管理頁面的“管理成員”操作:

      可以新增當(dāng)前角色的用戶,點(diǎn)擊“新增”

       

      3.4 部門管理頁面:

       

      3.5 菜單管理頁面:

       

       

      4、后臺(tái)業(yè)務(wù)邏輯都是簡(jiǎn)單的增刪改查,沒什么好說的。前面說的關(guān)于按鈕ID是否需要一張按鈕表的問題,我們系統(tǒng)在處理方式是

      在點(diǎn)擊設(shè)置按操作的時(shí)候傳遞一個(gè)菜單url,然后在代碼里面通過反射得到所有的按鈕,然后勾選按鈕后保存到數(shù)據(jù)庫。注意一個(gè)頁面的按鈕的ID不會(huì)重復(fù),所以通過這樣可以取到唯一的按鈕,而在數(shù)據(jù)表TB_MenuRole中保存的如果是按鈕權(quán)限,是有保存Menu_Id的,所以不必?fù)?dān)心不同頁面的問題。這樣設(shè)計(jì)的好處是當(dāng)程序員在頁面上面新增刪除按鈕后不用修改配置,通過反射即可加載頁面的即時(shí)按鈕個(gè)數(shù)。純屬個(gè)人設(shè)計(jì),如果有問題,歡迎大俠們指正。

       

      posted @ 2015-06-30 09:17  懶得安分  閱讀(22302)  評(píng)論(22)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产日韩另类综合11页| 91久久亚洲综合精品成人| 欧美做受视频播放| 久久国产精品二国产人妻| 日韩丝袜欧美人妻制服| 梧州市| 婷婷四虎东京热无码群交双飞视频| 日本亚洲一区二区精品| 国产福利微视频一区二区| 精品免费看国产一区二区| av一区二区中文字幕| 成人区精品一区二区不卡| 影音先锋亚洲成aⅴ人在| 日韩成人无码影院| 国产精品一区二区三区蜜臀| 国产午夜福利不卡在线观看 | 蜜桃av亚洲第一区二区| 久久影院综合精品| 91久久亚洲综合精品成人| 亚洲欧美偷国产日韩| 被灌满精子的少妇视频| 美女视频黄频大全视频| 亚洲一二三区精品美妇| gogogo高清在线观看视频中文| 亚洲欧美中文字幕日韩一区二区 | 亚洲国产精品综合久久网络| 中文字幕在线精品人妻| 花莲市| 亚洲国产综合性亚洲综合性| 成人国产精品中文字幕| 女人被狂躁到高潮视频免费软件| 国产成人午夜在线视频极速观看 | 成人精品网一区二区三区| 丰满的女邻居2| 天天影视色香欲综合久久| 亚洲国产av一区二区| 久久久久久久久18禁秘| 亚洲熟妇无码av另类vr影视| 羞羞影院午夜男女爽爽免费视频| 欧美老熟妇喷水| 亚洲一级特黄大片一级特黄|