• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 访问控制权限校验指导
2
3## 场景介绍
4
5应用在提供对外功能服务接口时,可以根据接口涉数据的敏感程度或所涉能力的安全威胁影响,在系统定义的[权限定义列表](permission-list.md)中选择合适的权限限制当前接口的开放范围,对接口访问者进行权限校验。
6
7## 接口说明
8
9以下仅列举本指导使用的接口,更多说明可以查阅[API参考](../reference/apis/js-apis-abilityAccessCtrl.md)。
10
11checkAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus>
12
13| 参数名   | 类型                 | 必填 | 说明                                       |
14| -------- | -------------------  | ---- | ------------------------------------------ |
15| tokenID   |  number   | 是   | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](../reference/apis/js-apis-bundleManager-applicationInfo.md)获得。             |
16| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[系统权限定义列表](permission-list.md)中查询。 |
17
18
19## 完整示例
20
21进行权限校验的开发步骤为:
22
231. 获取调用者的身份标识:tokenId。
24   > **说明:**<br>
25   > 获取访问者身份标识tokenId的方法 getCallingTokenId 可参考[API参考](../reference/apis/js-apis-rpc.md)。
262. 待校验的权限名:ohos.permission.ACCELEROMETER273. 使用checkAccessToken接口对当前调用者进行权限校验。
284. 根据权限校验结果采取对应的措施。
29
30```ts
31  import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
32  import { BusinessError } from '@ohos.base';
33  import rpc from '@ohos.rpc'
34
35  class Stub extends rpc.RemoteObject {
36      onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) {
37          let callerTokenId: number = rpc.IPCSkeleton.getCallingTokenId();
38          console.log("RpcServer: getCallingTokenId result: " + callerTokenId);
39          let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
40          try {
41              atManager.checkAccessToken(callerTokenId, "ohos.permission.ACCELEROMETER").then((data: abilityAccessCtrl.GrantStatus) => {
42                  console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
43              }).catch((err: BusinessError) => {
44                  console.log(`checkAccessToken fail, err->${JSON.stringify(err)}`);
45              });
46          } catch(err) {
47              console.log(`catch err->${JSON.stringify(err)}`);
48          }
49          return true;
50      }
51  }
52```
53