1. 程式人生 > >淺談OFBiz之許可權設計

淺談OFBiz之許可權設計

簡介

Apache Open For Business(Apache OFBiz) 是Apache開源的一個經典ERP專案。它提供了一套企業應用,用於整合以及自動化一些企業的“商業流程”。

從學習角度來看,它也是一個非常不錯的企業級應用框架。這篇文章從OFBiz的許可權設計這一切入點來談談OFBiz對於應用系統的許可權設計。

設計思想簡述

OFBiz採用的“安全組”(Security Group)來將"許可權"跟"使用者"聯絡起來。系統中有若干種許可權,比如系統預置的許可權、使用者自定義的許可權、資源的許可權、操作的許可權等等,這些許可權會跟安全組建立關係(多對多的關係),而使用者又與安全組建立關係(也是多對多的關係)。

其中,系統預置許可權,是以XML配置的方式匯入資料表的。這些配置檔案通常的路徑為{Component/Application baseDir}/data/XXXSecurityData.xml。這裡有對整個許可權設計相關表的初始化資料。

許可權控制級別

OFBiz對於許可權有如下幾個控制級別:

登入級別

在每個Component的根目錄下的ofbiz-component.xml檔案下,有對於訪問該component的“最基本的許可權”定義。所謂最基本的許可權,就是登入該component的使用者需要至少擁有該檔案內定義的許可權才可以訪問。示例:


見其中的“base-permission”屬性。可以看到它包含了兩個許可權值——OFBTOOLS/FACILITY,這也意味著你必須同時擁有這兩個許可權才能訪問該元件。而通常一個Component也會同時包含許可權“OFBTOOLS”以及許可權“COMPONNENT-NAME_VIEW”,這樣配置的目的是OFBTOOLS用於對web app的訪問進行控制,而COMPONNENT-NAME_VIEW用於控制瀏覽web app的資訊。

component 選單級別

component的頂級選單顯示的元件將只對登入過的使用者(並且這些使用者至少具有“WEBAPP-NAME_VIEW”或者“COMPONENT_NAME-ADMIN”許可權)顯示,這跟登入級別的限制相似。這種級別的訪問控制實現在“appbar.ftl”中用以控制顯示哪些應用程式的tab bar。

request(controller.xml)級別

這裡有兩個重要的引數,在每個component的webapp下的controller.xml中的每個request(<request-map)標籤有一個security(<security)標籤,包含了兩個屬性:

  • https:定義是否對該請求應用SSL加密
  • auth:定義是否需要登入才能執行該請求,因此只有在登入成功以及在其他級別上的安全檢查通過後,該請求才會被執行
<!-- Request Mappings -->
    <request-map uri="MarketingReport">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="MarketingReport"/>
    </request-map>

screen級別

在每個component下的widget資料夾下的screen配置檔案中,<section節點下的<condition子節點,存在一個名為<if-has-permission的節點,它有兩個屬性:
  • permission:標識位於哪個component
  • action:標識執行的動作
permission_action正好構成一個許可權,示例:

相關推薦

OFBiz許可權設計

簡介Apache Open For Business(Apache OFBiz) 是Apache開源的一個經典ERP專案。它提供了一套企業應用,用於整合以及自動化一些企業的“商業流程”。從學習角度來看,它也是一個非常不錯的企業級應用框架。這篇文章從OFBiz的許可權設計這一切

iOS開發MVVM的架構設計與團隊協作

1 // 2 // NetRequestClass.m 3 // MVVMTest 4 // 5 // Created by 李澤魯 on 15/1/6. 6 // Copyright (c) 2015年 李澤魯. All rights reserved. 7

android的MVP設計模式記憶體洩露問題

我上次寫了淺談mvp,經過一段時間的思考,發現我忽略了一個問題 記憶體洩露問題。 因為Presenter中持有View介面物件,這個介面物件實際為MainActivity.this,Modle中也同時擁有Presenter物件例項,當MainActivi

java 23種設計模式模板方法模式(Template )

模板方法模式:模板方法模式是類的行為模式的一種,符合開閉原則(對擴充套件開放,對修改關閉)。父類提取子類公共方法,並提供若干抽象方法供子類實現,以減少子類中的重複程式碼,並提高可複用性。示例:1.建立一個父類bird,每天只有吃和睡才能生活,但是必須要先進行吃,然後再進行睡:

soaRESTful

let net ado soap 業務 淺談 網絡資源 ado.net 面向服務 今晚打算花點時間整理一下面向服務的架構oap。1傳統中小型項目架構一般是這樣的:(java)html+servlet+jdbc.和(.net)html+handler+ado.net都是在一臺

遊戲中BOSS設計的思路

移動 進程 經典 它的 操作技巧 時有 設計時 註意 有著 對於大多數遊戲來說,BOSS在其設計上都有著不可替代的作用,也是玩家印象最為深刻的一部分。近期自己也有在做BOSS的設計工作,有一些心得想要分享一下: 1.明確BOSS的設計目的 在設計之初,我們一定要想明白,設計

MYSQL日誌文件系統

mysql日誌文件系統 同大多數關系型數據庫一樣,日誌文件是MySQL數據庫的重要組成部分。MySQL有幾種不同的日誌文件,通常包括錯誤日誌文件,二進制日誌,通用日誌,慢查詢日誌,等等。這些日誌可以幫助我們定位mysqld內部發生的事件,數據庫性能故障,記錄數據的變更歷史,用戶恢復數據庫等等 MySQL

jqueryon()綁定事件和off()解除綁定事件

span syntax num this code value 自己 冒泡 屬性 off()函數用於移除元素上綁定的一個或多個事件的事件處理函數。 off()函數主要用於解除由on()函數綁定的事件處理函數。 該函數屬於jQuery對象(實例)。 語法 jQuery

架構路:單點登錄 SSO

用戶體驗 們的 建設 驗證機制 一個 簡單的 用戶登錄 集中 不同 前言:SSO 單點登錄   “半吊子”的全棧工程師又來了,技術類的文章才發表了兩篇,本來想先將主攻的幾個系列都開個頭(Nodejs、Java、前端、架構、全棧等等),無奈博客起步太晚,寫博文的時間又沒有很多

【JavaScript系列】JavaScript函數(一)

php 面向過程 .com func fun 面向對象編程 quest ice bbf 在編程語言中,無論是面向過程的C,兼備面過程和對象的c++,還是面向對象的編程語言,如java,.net,php等,函數均扮演著重要的角色。當然,在面向對象編程語言JavaScript中

go介面、執行緒、通道,純屬個人看法

淺談go介面、通道、執行緒 golang 接 口 Go 是靜態型別的。每一個變數有一個靜態的型別,也就是說,有一個已知型別並且在編譯時就確定下來了 type MyInt int var i int var j MyInt 那麼 i 的型別為 int 而 j 的型別為 MyInt。即使

MySQL EXPLAIN

在NoSQL橫行的時代,傳統關係型資料庫也還是有佔據它的一席之位。MySQL 的市場份額還是很大的。 據瞭解到的MySQL版本已經到5.7.20+了。目前本人伺服器上的還沒有這麼高。只在5.5+的版本上 說到MySQL免不了要提到的是 它的執行計劃,EXPLAIN 關鍵字可以模擬優化器執行S

nodeTCP

node之TCP 構建TCP伺服器 建立TCP伺服器端 TCP服務的事件 1.伺服器事件 2.連線事件

軟體中許可權的問題

對於這個問題,只要有開發專案經驗的人都會涉及到,而且,根據不同的專案,許可權的要求也不一樣。本人根據自己做的一個專案,來談一談許可權在軟體專案或其他專案中的應用和體會。 這是個關於房地產銷售的軟體,屬於BS結構,由於裡面的結構和功能比較複雜,我不能一一列舉,在此我只談談系統中許可權的這塊。許可權

JavaScriptEvent

一  簡述JavaScript及其在瀏覽器中的地位 (一)  瀏覽器主要構成 雖然不同瀏覽器之間存在差異(如Google Chrome,Firefox,Safari和IE等),但單從瀏覽器構成來說,大同小異,大致可歸結為如下幾類: 1.User Interface

Centos使用者許可權管理

淺談Centos使用者許可權管理 2014年12月03日 11:02:56 lyg520lj 閱讀數:586 一.使用者與組的概念 1.理解linux多使用者,多工的特性 Linux是一個真實的、完整的多使用者多工作業系統,多使用者多工就是可以在系統上建立多個使用者,而多個使用者可以

qmakepro、pri、prf、prl檔案

儘管每次和cmake對比起來,我們總是說 qmake 簡單、功能少。但是qmake仍然是一個非常複雜的東西,我想大多人應該和我一樣吧: 不是太清楚CONFIG等變數到底如何起作用的 用過的qmake內建變數和函式不超過20個 看Qt Creator原始碼或者

ES6promise 實際開發中的使用(一)

一:promise是個什麼鬼?   1.1:說起promise這個玩意,首先呢,我們來討論一下什麼叫做"非同步"而於此相反的呢就是"同步"呢,好,那下面讓寡人給大家舉個例子來講明白什麼是同步什麼是非同步.                 1.1.1:同步     同步就

【JavaScript系列】JavaScript函式(一)

       在程式語言中,無論是面向過程的C,兼備面過程和物件的c++,還是面向物件的程式語言,如java,.net,php等,函式均扮演著重要的角色。當然,在面向物件程式語言JavaScript中(嚴格來說,JS屬於弱面向物件程式語言),函式(function)更扮演著極其重要的角色和佔有極其重要的地位。

架構路:前後端分離模式》

前言:分離模式   對前後端分離研究了一段時間,恰逢公司有一個大專案決定嘗試使用前後端分離模式進行,便參與其中。該專案從2016年初立項至今,平平穩穩得度過,但也湧現出越來越多的問題,絕對不是說前後端分離模式不好,而是很多公司在嘗試前後端分離的時候沒有做好充分得