• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      .NET平臺(tái)下角色訪問動(dòng)態(tài)權(quán)限管理的設(shè)計(jì)與實(shí)現(xiàn)

      2017-04-15 11:21蘭萍
      電腦知識(shí)與技術(shù) 2016年34期
      關(guān)鍵詞:角色

      蘭萍

      摘要:為了提高Web信息管理系統(tǒng)的靈活性和可維護(hù)性,根據(jù)RBAC的基本思想, 利用Web 控件TreeView、Menu 及ASP.NET 技術(shù), 通過遞歸算法,動(dòng)態(tài)生成用戶權(quán)限樹型菜單和下拉菜單的具體實(shí)現(xiàn)方法。用戶無權(quán)限的模塊對(duì)用戶不可見, 提高了系統(tǒng)的安全性。該方法具有一定的通用性,可以很容易擴(kuò)展到其他Web開發(fā)平臺(tái)上。

      關(guān)鍵詞:角色;Web service;TreeView控件;Menu控件;遞歸算法

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)34-0095-03

      1序言

      在B/S信息管理系統(tǒng)中,實(shí)現(xiàn)權(quán)限動(dòng)態(tài)分配的方法有多種。從操作對(duì)象上看,可以分為兩種:以用戶為中心的方法和以角色為中心的方法。以用戶為中心的方法是對(duì)每個(gè)用戶直接設(shè)置權(quán)限,而以角色為中心的方法是給每個(gè)角色授權(quán),這是一種間接設(shè)置權(quán)限的方法。這種以角色為中心的方法,是現(xiàn)在使用最多的一種方法,但相對(duì)復(fù)雜一點(diǎn)。它的基本做法是將系統(tǒng)中的所有用戶分成多個(gè)不同的角色,屬于同一角色的用戶具有相同的操作權(quán)限。這樣,在實(shí)現(xiàn)時(shí)就可以針對(duì)角色設(shè)置權(quán)限?;诮巧膭?dòng)態(tài)權(quán)限分配具有很大的靈活性,主要體現(xiàn)在不用修改程序代碼就可以實(shí)現(xiàn)操作權(quán)限的調(diào)整,更好地適應(yīng)了由于業(yè)務(wù)的調(diào)整或變化所帶來的操作權(quán)限的變化。本文采用了基于角色訪問控制(RBAC,Role Based Access Control) 的基本思想, 巧妙地利用了Web控件TreeView 及Menu, 設(shè)計(jì)了在B/S 模式下,根據(jù)不同的用戶,不同的角色權(quán)限,通過數(shù)據(jù)庫(kù)表的設(shè)計(jì),動(dòng)態(tài)生成用戶權(quán)限樹型菜單和下拉菜單的具體實(shí)現(xiàn)方法。

      2角色訪問控制(RBAC)的思想

      基于角色的訪問控制在用戶和權(quán)限操作之間引入角色(Role)的概念,其目的是為了隔離用戶與用戶所具有的權(quán)限。分配給每個(gè)用戶一個(gè)合適的角色,每個(gè)角色都具有其對(duì)應(yīng)的權(quán)限。一個(gè)角色也可以有多個(gè)用戶,一個(gè)用戶可以有多個(gè)角色。一個(gè)角色可以有多個(gè)權(quán)限,相同的權(quán)限也可以賦予多個(gè)角色。角色作為中間橋梁把用戶和權(quán)限聯(lián)系起來,一個(gè)角色與權(quán)限的關(guān)聯(lián)可以看作該角色擁有的一組權(quán)限的集合。權(quán)限賦予角色,角色分配給用戶。RBAC 是實(shí)施面向企業(yè)的安全策略的一種有效的訪問控制方式,其具有靈活性、方便性和安全性的特點(diǎn),目前在大型數(shù)據(jù)庫(kù)系統(tǒng)的權(quán)限管理中得到普遍應(yīng)用。角色訪問控制(RBAC)基本模型如圖1所示。

      3 .NET 架構(gòu)與Web Service

      .NET框架(.NET Framework) 是由微軟開發(fā),一個(gè)致力于敏捷軟件開發(fā)(Agile softwaredevelopment)、快速應(yīng)用開發(fā)(Rapidapplication development)、平臺(tái)無關(guān)性和網(wǎng)絡(luò)透明化的軟件開發(fā)平臺(tái)。.NET是微軟為下一個(gè)十年對(duì)服務(wù)器和桌面型軟件工程邁出的第一步。.NET包含許多有助于互聯(lián)網(wǎng)和內(nèi)部網(wǎng)應(yīng)用迅捷開發(fā)的技術(shù)。從層次結(jié)構(gòu)來看,.NET框架又包括三個(gè)主要組成部分:公共語言運(yùn)行時(shí)(CLR:Common Language Runtime)、服務(wù)框架(Services Framework)和上層的兩類應(yīng)用模板——傳統(tǒng)的Windows應(yīng)用程序模板(Win Forms)和基于ASP.NET的面向Web的網(wǎng)絡(luò)應(yīng)用程序模板(Web Forms和Web Services)。

      Web Service技術(shù)是一種應(yīng)用程序,其作用是向用戶提供某些功能,并以受控的方式提供一些服務(wù)和數(shù)據(jù)訪問,其開放接口的訪問方式,可以在任何支持這些標(biāo)準(zhǔn)的操作系統(tǒng)中使用,從而為跨平臺(tái)的開發(fā)奠定了基礎(chǔ)。同時(shí)出于安全性的考慮,無論是個(gè)人或公司站點(diǎn),都不可能完全開放的進(jìn)行信息共享,這個(gè)時(shí)候,Web Service的出現(xiàn)解決就解決了這個(gè)問題。Web Service主要由四部分組成,分別是Web服務(wù),服務(wù)的提供方、服務(wù)的請(qǐng)求方和服務(wù)的注冊(cè)機(jī)構(gòu)。

      4數(shù)據(jù)庫(kù)表的設(shè)計(jì)

      數(shù)據(jù)庫(kù)表的設(shè)計(jì),DBMS采用微軟的SQL SERVER 2012,7張表的設(shè)計(jì)如下。

      部門(bm)表的結(jié)構(gòu)如表1所示。

      5基于角色的權(quán)限動(dòng)態(tài)分配的實(shí)現(xiàn)思路及模塊劃分。

      基于角色的權(quán)限動(dòng)態(tài)分配的實(shí)現(xiàn)思路:

      1)根據(jù)用戶表的編號(hào),從用戶角色表中獲取用戶所屬角色;

      2)再根據(jù)角色編號(hào)從角色功能樹表和功能樹表中獲取可以操作的所有資源;

      用Treeview控件或menu控件動(dòng)態(tài)實(shí)現(xiàn)用戶權(quán)限樹型菜單或下拉菜單的基本思想是:根據(jù)角色訪問控制(RBAC) 的基本原理,給用戶分配不同的角色,每個(gè)角色對(duì)應(yīng)一些權(quán)限,然后根據(jù)用戶ID 獲取用戶對(duì)應(yīng)的角色集合,由角色集合獲取對(duì)應(yīng)的權(quán)限集合, 再由權(quán)限集合利用Treeview 或menu控件動(dòng)態(tài)生成一棵由該用戶對(duì)應(yīng)的角色能訪問的頁面(模塊)組成的樹型菜單或下拉菜單。這樣,用戶無權(quán)訪問的頁面在權(quán)限樹型菜單或下拉菜單就不會(huì)出現(xiàn),不同的用戶進(jìn)入的界面不同,實(shí)現(xiàn)了用戶權(quán)限的統(tǒng)一管理。

      權(quán)限管理系統(tǒng)分為:”部門管理”、“用戶管理”和“角色管理”3個(gè)功能模塊。

      1) 部門管理在:主要分為添加、刪除、修改和查詢。添加1個(gè)部門時(shí),同時(shí)添加部門對(duì)應(yīng)的角色(可能多個(gè))。

      2) 用戶管理:主要分為添加、刪除、修改和查詢。添加一個(gè)用戶時(shí),采用用戶、部門、角色進(jìn)行用戶角色分配(因?yàn)橐粋€(gè)員工屬于1個(gè)部門),即添加1個(gè)用戶時(shí),同時(shí)分配該用戶相對(duì)應(yīng)的角色。

      3) 角色管理:主要分為添加、刪除、修改和查詢。在添加角色時(shí)同時(shí)分配功能樹。

      6系統(tǒng)中Web Service 的設(shè)計(jì)應(yīng)用

      動(dòng)態(tài)權(quán)限管理系統(tǒng)中大部分的邏輯運(yùn)算和數(shù)據(jù)的訪問都是在Web Service 中進(jìn)行的,客戶端利用Web Service 的方法對(duì)具體功能進(jìn)行實(shí)現(xiàn)。在表8中將列出Web Service 的設(shè)計(jì)應(yīng)用。

      7具體實(shí)現(xiàn)

      系統(tǒng)開發(fā)平臺(tái)采用微軟Visual studio 2010。開發(fā)語言asp.net(c#)。角色添加及分配的功能樹的運(yùn)行主界面如圖2所示。其中樹型菜單是采用TreeView控件根據(jù)數(shù)據(jù)庫(kù)表動(dòng)態(tài)進(jìn)行綁定的。

      物資管理部門的普通員工登錄系統(tǒng)后根據(jù)權(quán)限管理系統(tǒng)自動(dòng)生成的下拉菜單(利用Menu控件)如圖3所示。

      基于角色的權(quán)限分配系統(tǒng)的下拉菜單的生成核心代碼如下,用到遞歸算法。

      private void PopulateMenu()

      {

      DataTable treeViewData = GetTreeViewData();

      AddTopMenuItems(treeViewData); //綁定父節(jié)點(diǎn)

      }

      private DataTable GetTreeViewData() //獲取數(shù)據(jù)

      {

      string selectCommand = "select distinct jsgns.GN_DM,mc,SJGN_M,CD_AN_DM,Sybz='y' from yh,yhjs,jsgns,gns where yh.USER_ID=yhjs.USER_ID and yhjs.JS_DM=jsgns.js_dm and jsgns.GN_DM=gns.GN_DM and yh.USER_ID=" + Session["user_id"] + "";

      string conString = ConfigurationManager.ConnectionStrings["default111"].ConnectionString;

      SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString);

      DataTable dtblDiscuss = new DataTable();

      dad.Fill(dtblDiscuss);

      return dtblDiscuss;

      }

      private void AddTopMenuItems(DataTable treeViewData)// 綁定SJGN_M等于0的結(jié)點(diǎn)

      {

      DataView view = new DataView(treeViewData);

      view.RowFilter = "SJGN_M=0";

      foreach (DataRowView row in view)

      {

      MenuItem node = new MenuItem();//以下為設(shè)置結(jié)點(diǎn)的屬性

      node.NavigateUrl=row["CD_AN_DM"].ToString();

      node.Text = row["mc"].ToString();

      node.Value = row["gn_dm"].ToString();

      node.Target = "main";

      Menu1.Items.Add(node);//添加結(jié)點(diǎn),Menu1為Menu控件的ID屬性

      AddChildMenuItems(treeViewData, node);//綁定子節(jié)點(diǎn)

      }

      }

      private void AddChildMenuItems(DataTable treeViewData, MenuItem parentMenuItems)//綁定子節(jié)點(diǎn)

      {

      DataView view = new DataView(treeViewData);

      view.RowFilter = "SJGN_M=" + parentMenuItems.Value;

      foreach (DataRowView row in view)

      {

      MenuItem node = new MenuItem();//以下為設(shè)置結(jié)點(diǎn)的屬性

      node.NavigateUrl = row["CD_AN_DM"].ToString();

      node.Text = row["mc"].ToString();

      node.Value = row["gn_dm"].ToString();

      node.Target = "main";

      parentMenuItems.ChildItems.Add(node);//添加結(jié)點(diǎn)

      AddChildMenuItems(treeViewData, node);//遞歸,綁定子節(jié)點(diǎn)

      }

      }

      8結(jié)論

      .NET平臺(tái)下角色訪問動(dòng)態(tài)權(quán)限管理重點(diǎn)依賴于數(shù)據(jù)庫(kù)的設(shè)計(jì),根據(jù)數(shù)據(jù)庫(kù)和角色分配權(quán)限原理,動(dòng)態(tài)的生成樹型和下拉菜單。同時(shí)因?yàn)閿?shù)據(jù)庫(kù)的一致性,所以很容易推廣到其他的Web平臺(tái)。該權(quán)限分配系統(tǒng)在上海某園林公司得到了具體的應(yīng)用。

      參考文獻(xiàn):

      [1] 杜利峰,許淳.基于ASP.NET權(quán)限動(dòng)態(tài)分配的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(18):36.

      [2] 梁智,沈倩.ASP.NET MVC下基于RBAC權(quán)限認(rèn)證的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué),2011,25(9):75.

      [3] 王珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,2006.

      [4] 詹英,林蘇映.數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用-SQL Server 2012教程[M].北京:清華大學(xué)出版社,2014.

      [5] 李增民,苗榮.ASP.NET4.5高級(jí)編程[M].北京:高等教育出版社,2014.

      [6] 李銘.C#高級(jí)編程[M].北京:高等教育出版社,2015.

      猜你喜歡
      角色
      小學(xué)語文教師在實(shí)施新課程中的角色定位
      教師和學(xué)生角色的轉(zhuǎn)變是實(shí)現(xiàn)有效教學(xué)的關(guān)鍵
      生態(tài)系統(tǒng)理論視角下醫(yī)院志愿者角色和功能的研究
      辦公室行政管理工作的“角色”與效率分析
      普通高等學(xué)校思想政治教育輔導(dǎo)員角色問題研究
      观塘区| 广平县| 安乡县| 休宁县| 朔州市| 山丹县| 年辖:市辖区| 道孚县| 尖扎县| 观塘区| 禹城市| 万年县| 九江市| 湟源县| 柳林县| 兴山县| 铜陵市| 陵水| 上犹县| 盐亭县| 南汇区| 若羌县| 乌兰察布市| 英超| 乌兰浩特市| 绍兴市| 涪陵区| 金溪县| 绩溪县| 竹山县| 凤台县| 霍城县| 隆子县| 楚雄市| 宣恩县| 紫阳县| 翼城县| 和林格尔县| 呼和浩特市| 濮阳县| 漯河市|