DataAbility權限控制
DataAbility提供數據服務,并不是所有的Ability都有權限讀寫它,DataAbility有一套權限控制機制來保證數據安全。分為靜態權限控制和動態權限控制兩部分。
靜態權限控制
DataAbility作為服務端,在被拉起的時候,會根據config.json里面配置的權限來進行校驗,有"readPermission"、"writePermission"和"Permission"三個配置項,可以不配或者為空。示例如下:
"abilities": [
...
{
"name": ".DataAbility",
"srcLanguage": "ets",
"srcPath": "DataAbility",
"icon": "$media:icon",
"description": "$string:DataAbility_desc",
"type": "data",
"visible": true,
"uri": "dataability://com.samples.famodelabilitydevelop.DataAbility",
"readPermission": "ohos.permission.READ_CONTACTS",
"writePermission": "ohos.permission.WRITE_CONTACTS"
},
...
]
客戶端在拉起DataAbility的時候,需要校驗客戶端是否有權限拉起該DataAbility。客戶端的權限配置在config.json配置文件的"module"對象的"reqPermissions"對象中,示例如下:
{
...
"module": {
...
"reqPermissions": [
{
"name": "ohos.permission.READ_CONTACTS"
},
{
"name": "ohos.permission.WRITE_CONTACTS"
},
...
],
...
}
}
動態權限控制
靜態權限校驗只能控制某個DataAbility是否能被另一個Ability或應用拉起,無法精確校驗每個讀寫接口的權限,因為拉起DataAbility的時候,還不知道應用是否需要讀寫它的數據。
動態權限控制是校驗每個數據操作的接口是否有對應的權限。客戶端調用數據操作接口所需的權限如下表所示。
表1 接口對應的讀寫權限配置
需要配置讀權限的接口開發前請熟悉鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md ] | 需要配置寫權限的接口 | 據實際操作配置讀寫權限的接口 |
---|---|---|
query、normalizeUri、denormalizeUri、openfile(傳入mode有'r') | insert、batchInsert、delete、update、openfile(傳入mode有'w') | executeBatch |
對于需要配置讀權限的接口,服務端需要配置readPermission,客戶端必須申請相應的讀權限才能調用相關的接口。
對于需要配置寫權限的接口,服務端需要配置writePermission,客戶端必須申請相應的寫權限才能調用相關的接口。
審核編輯 黃宇
-
接口
+關注
關注
33文章
8598瀏覽量
151157 -
開發組件
+關注
關注
0文章
4瀏覽量
1153 -
鴻蒙
+關注
關注
57文章
2352瀏覽量
42858
發布評論請先 登錄
相關推薦
評論