亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

簡單客戶系統的權限控制實現

2019-11-18 13:15:06
字體:
來源:轉載
供稿:網友

  一個客戶系統最基本的功能是對客戶的創建,修改,刪除和查詢。實現這樣的功能通常是在數據庫中建一個Customer表,然后通過程序實現以上基本功能。在一個個人環境的應用中,一個用戶可以對所有的客戶進行任意操作,基本不存在權限控制問題。在多用戶系統中,客戶屬于一個人或者一群人,而對客戶的操作權限也不可能是人人一樣。所以需要對用戶的操作做權限控制。
  
  這里有必要先對權限控制方式本身做一下討論,有些系統用菜單進行權限控制,比如"新建客戶","瀏覽客戶",往往用操作名加上一個資源名代表一個權限,這樣的權限控制有一個缺陷,就是一般漏掉了一個資源范圍,比如瀏覽什么樣的客戶,就沒有說明。當然也可以加上,比如瀏覽個人客戶,瀏覽部門客戶,瀏覽公司客戶,但是隨著需要控制資源類型的增加,通過不斷增加菜單項來進行控制,并不是一個很好的方法。在B/S系統中的菜單控制,有2重意義,一是真正的菜單,沒有權限的用戶就看不到相應的菜單項,另外一個為了防止用戶任意提交信息,在服務器端對用戶提交的URL進行檢查,看是不是有這個權限。比如對于用戶請求的ListCus.do就要先檢查用戶是否有訪問這個URL的權限:
  public class ListCusAction extends Action{
    ...
    public ActionForward execute(...){
    ...
    //必須提供這樣的檢查的方法。
     PermitUtil.checkPermit(userID,url);
     list = dao.query(sql);
     ...
    }
  } 
  另外一種控制辦法是對操作和操作資源定義權限,比如用戶A可以對客戶進行修改操作。這樣細粒度的權限控制對程序的擴展性和安全性有很大好處,但實現比前一種費時,下面通過分析說明2種方式的特點。
  
  作為客戶系統最簡單的一種考慮,是每個用戶治理自己的客戶。這種請況下,我們通過在Customer表中增加一個用戶字段,就可以知道這個客戶對應于哪一個用戶。如下面的類所示:
  public class Customer{
    PRivate String ctmNo;
    private String ctmName;
    ...
    private String userID;
    //getters and setters
  } 
  那么通過菜單的控制方式,我們認為每個有客戶創建權的用戶都可以創建屬于自己的客戶,什么叫客戶創建權,就是可以看到和選擇“添加客戶”菜單項的用戶。同時,“客戶瀏覽”就表示瀏覽屬于自己的客戶,這樣一來,創建客戶的用戶可以看到自己的客戶,并進行操作,我們通過菜單控制權限方式完成了這個需求。需要注重的是:在用戶進行相應操作前,我們先判定這個客戶是不是屬于這個用戶,是就可以操作,不是就不可以。如下例所示:
  public class DelCusAction extends Action{
    ...
    public ActionForward execute(...){
    ...
    //必須提供這樣的檢查的方法。
     dao.checkPermit(customer,userID);
     dao.delete(customer);
     ...
    }
  } 
  進行這個判定是出于安全性考慮的,非凡在B/S架構的軟件系統中,你無法阻止客戶向服務器端任意提交信息。比如用戶A不使用菜單,向服務器請求"DelCus.do?ctmNo=No1",而No1屬于用戶B,假如不進行判定,客戶就被刪除掉了。所以光靠控制菜單項的顯示完成權限控制,并不完整。
  
  現在我們接觸一個更復雜一點的需求,就是客戶轉移,把客戶從一個用戶,指派給另外一個用戶。在上面的實現基礎上,只要添加一個接口,改變客戶所屬的用戶,問題也就解決了。如下:
  public class ChangeUserAction extends Action{
    ...
    public ActionForward execute(...){
    ...
     dao.checkPermit(customer,userID);
     //改變客戶所屬用戶到newUserID。
     dao.changeUser(customer,newUserID);
     ...
    }
  } 
  
  每個用戶現在可以治理自己的客戶,也可以把客戶交給別人治理,問題解決得完美。我們再考慮實際的情況,一個客戶可能可以被一個用戶看,但是不可以被修改或者刪除。我們怎么控制這樣的權限,加一個菜單項-"察看客戶",用戶A可以執行這個操作,但是不可以選擇菜單項-"修改客戶",針對每一個動作,我們加了一個菜單項。我們需要控制的內容變得越來越多。再深入分析,可以發現,其實上面的方案已經不能滿足需求。 2個客戶我們如何知道一個可以被用戶A看,一個不可以,出現了一個資源的治理問題,必須有另外的方案來進行這種權限的控制。我們設計一個資源類:
  public class CustomerResource{
    //客戶編號
    private String ctmNo;
    //操作類型
    private String action;
    //用戶
    private String userID;
    //setters and getters.
  } 
  再設計一個資源治理類:
  public class CustomerResourceManager{
    private static List resources;
    private static void addResources(CustomerResource resource){
     resources.add(resource);
    }
    //從數據庫裝載相應用戶的客戶操作權限。
    private static void retrieveResources(String userID){
    ...
    }
    //檢查相應的權限是否在resources中存在。
    private static boolean checkPermit(CustomerResource permit){
    ...
    }
  } 
  客戶端使用類:
  public class DelCusAction extends Action{
    ...
    public ActionForward execute(...){
     ...
     //必須提供這樣的檢查的方法。
     CustomerResource resource = new CustomerResource();
     resource.setCtmNo(customer.getCtmNo());
     resource.setAction("DELETE");
     resource.setUserID(userID);
     if(CustomerResourceManager.checkPermit(resource)){
      dao.delete(customer);
     }
     ...
    }
  } 
  在采用了上面的權限檢查方式后,我們可以對每一個客戶指定相應操作人的權限,對客戶的操作就限制在了操作類型的多少上,基本的有“UPDATE,INSERT,DELETE,LIST,VIEW”等,其余也可以定義“SUBMIT”等操作,具體取決于系統需求。這樣的好處是權限控制非常靈活,客戶可以作為資源在用戶之間自由流動。但是作為一個給用戶最終使用的權限系統,這樣的卻體系不適合于出現在用戶權限系統設置里面,不能叫每個用戶都去自己指定自己創建客戶的操作范圍,最好是通過這種方式實現默認的業務和權限設定,滿足了用戶需求,又屏蔽復雜性。在完整的系統中,基于菜單的控制也是必不可少,這樣的方式方便用戶使用,也更易于用戶理解。 2者通常應結合使用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久伊人| 色妞欧美日韩在线| 国产精品91久久久| 国产一区二中文字幕在线看| 激情久久av一区av二区av三区| 久久久久成人网| 亚洲天堂成人在线视频| 欧美在线视频免费播放| 日韩视频免费在线观看| 91亚洲国产成人精品性色| 91在线免费网站| 日韩国产在线看| 国产日产欧美a一级在线| 日韩电影网在线| 亚洲男人天堂视频| 欧美老女人在线视频| 欧美中文字幕视频| 欧美激情区在线播放| 久久欧美在线电影| 亚洲人成77777在线观看网| 国产欧美精品一区二区三区介绍| 色中色综合影院手机版在线观看| 亚洲福利在线播放| 美女少妇精品视频| 久久天天躁日日躁| 久久久久久国产免费| 亚洲欧美国产精品| 亚洲精品丝袜日韩| 国产一级揄自揄精品视频| 国产精品一区二区三区久久| 日韩av电影在线网| 亚洲免费伊人电影在线观看av| 国产亚洲欧美日韩精品| 国产精品久久久久av| 成人黄色生活片| 久久精品视频99| 大量国产精品视频| 午夜精品久久17c| 久久香蕉频线观| 欧美激情一级精品国产| 国产精品久久久久久久美男| 日韩欧美亚洲范冰冰与中字| 国产精品国产福利国产秒拍| 亚洲成人xxx| 日韩黄色高清视频| 久久久久久久久亚洲| 亚洲欧美在线第一页| 欧美高清在线播放| 国产欧美日韩中文字幕| 精品露脸国产偷人在视频| 日韩av在线影视| 成人黄色免费网站在线观看| 一区二区亚洲欧洲国产日韩| 国产mv久久久| 久久99精品国产99久久6尤物| 川上优av一区二区线观看| 国产亚洲欧美日韩一区二区| 在线观看日韩www视频免费| 在线观看久久久久久| 欧美激情在线狂野欧美精品| 欧美精品成人91久久久久久久| 在线看片第一页欧美| 美女av一区二区| 98精品在线视频| 国产精品自产拍在线观看中文| 日韩精品免费综合视频在线播放| 亚洲欧美日韩国产中文专区| 欧美另类极品videosbest最新版本| 国产不卡精品视男人的天堂| 亚洲天堂av综合网| 欧美激情xxxx性bbbb| 国产精品久久久久久网站| 欧美高清第一页| 亚洲а∨天堂久久精品喷水| 国产精品福利观看| 91精品国产自产在线观看永久| 亚洲人成电影在线观看天堂色| 亚洲高清一二三区| 国产精品日韩欧美综合| 欧美片一区二区三区| 国产精品热视频| 日韩精品在线观| 欧美小视频在线观看| 国产精品视频一| 国产精品揄拍500视频| 国产欧美精品一区二区三区-老狼| 97在线免费观看| 俺也去精品视频在线观看| 5278欧美一区二区三区| 26uuu另类亚洲欧美日本老年| 亚洲tv在线观看| 视频在线一区二区| 亚洲成人黄色在线观看| 日韩欧美国产骚| 精品国产视频在线| 国产欧美一区二区| 国产精品美女免费| 九九热这里只有精品免费看| 国产精品永久免费视频| 久久伊人免费视频| 亚洲大尺度美女在线| 日韩免费在线播放| 亚洲国产精品福利| 国产成人精品综合| 日韩欧美中文第一页| 国产精品高清在线| 欧美成人午夜激情视频| 久久人人爽人人爽爽久久| 91人成网站www| 国产日产亚洲精品| 亚洲精品日韩激情在线电影| 欧美精品做受xxx性少妇| 国产精品久久久久高潮| 久久久天堂国产精品女人| 久久精品国产亚洲精品| 亚洲人线精品午夜| 2019中文字幕在线观看| 日韩av电影院| 欧美性猛交99久久久久99按摩| 成人免费视频网| 亚洲欧美在线一区二区| 97久久精品人人澡人人爽缅北| 欧美性感美女h网站在线观看免费| 中文字幕日韩av电影| 98精品国产自产在线观看| 色天天综合狠狠色| 亚洲曰本av电影| 欧美日韩国内自拍| 国产精品久久久精品| 高清亚洲成在人网站天堂| 久久精品91久久香蕉加勒比| 日韩中文理论片| 国产亚洲激情视频在线| 国产在线视频91| 国产精品久久久久91| 性色av一区二区咪爱| 欧美日韩另类在线| 亚州成人av在线| 欧美成aaa人片在线观看蜜臀| 中文字幕欧美视频在线| 97在线看免费观看视频在线观看| 久久99国产综合精品女同| 国产欧美日韩最新| 成人福利网站在线观看11| 日韩欧美aⅴ综合网站发布| 日韩精品视频在线| 国产成人拍精品视频午夜网站| 北条麻妃一区二区在线观看| 色小说视频一区| 国产精品电影一区| 国产精品私拍pans大尺度在线| 一色桃子一区二区| 亚洲尤物视频网| 日韩欧美在线观看| 国产成人精品视频在线观看| 国产精品91一区| 中文字幕亚洲综合| 亚洲欧洲av一区二区| 国产日韩欧美在线播放| 国产美女精品视频免费观看| 久久综合亚洲社区| 日韩女优人人人人射在线视频| 国产精品电影在线观看| 中文字幕亚洲欧美一区二区三区|