权限入门知识
● 權限檢查
AUTHORITY-CHECK OBJECT auth_obj [FOR USER user]
ID id1 {FIELD val1}|DUMMY
[ID id2 {FIELD val2}|DUMMY]
...
[ID id10 {FIELD val10}|DUMMY].
?
用OPEN SQL語句進行數據庫操作時,系統本身并不進行任何權限檢查,所以我們在編寫相關的數據庫操作程序時,必須考慮用戶是否具有權限,防止未經授權的用戶操作關鍵數據。
授權對象(authorization objects):用戶權限的實現是通過授權對象實現的,一個授權對象代表數據庫操作的行為,如查詢和修改關鍵字段,這些字段用來作為權限檢查和分配的模板。多個對象被組合成一個類。
上述命令中auth_obj為授權對象名,[FOR USER user]為權限檢查用戶,若省略則表示權限的檢查對象為當前LOGIN用戶。<id1>~<id10>是授權對象中定義的檢查項目,權限檢查時,必須列出授權對象中的所有檢查項目,但是可以通過DUMMY來跳過檢查。
?
下面講述一下,有關于權限設定的一些主要步驟。
①創建權限項目
T-CD:SU20
②創建授權對象
T-CD:SU21
①中定義的權限項目在這里被引用,其中項目名ACTVT為操作行為,如查詢,更新等。
根據上述的設定,可以確定哪些航空公司可以被用戶進行什么樣的操作(查詢,修改,創建)。
??????
③創建profile
T-CD:SU01 -> F9
④給用戶設定權限
T-CD:SU01 -> Profile tag
將創建的profile分配給用戶
?
授權檢查:
(1)事務運行權限
創建事務代碼時,可以在authorization object 字段輸入授權對象,并設定value字段。如果用戶希望運行相應的事務,必須具有相關的權限,否則輸出提示信息。
(2) 程序運行的權限
在ABAP程序的屬性中,可以輸入Authorization Groups屬性,授權組與S_DEVELOP和S_PROGRAM權限對象中的P_GROUP字段相關聯。通過檢查該字段和用戶主記錄中的相應值,可以確定用戶是否可以運行該程序。
(3)程序內部的權限檢查
如果系統不能自動控制用戶運行該程序的權限,則可以在程序內部進行權限檢查:
格式:AUTHORITY-CHECK OBJECT 'object'
ID 'name1' FIELD f1
ID 'name2' FIELD f2
注:name用于指定字段名,字段用于指明授權對象相應的字段值,該值將于用戶主記錄中的值進行比較。且必須列出授權對象中的所有值,但是可以通過dummy跳過該值的檢查(ID 'name' dummy).語句執行后,對SY-SUBRC進行檢查。4為該用戶不具有該權限,8授權對象字段列表不正確,12授權對象不存在等。
總結
- 上一篇: 宏及其函数基础知识
- 下一篇: ABAP中有关于换行符,TAB KEY等