|
如何使用OpenHarmony简单验证rbac角色管理
开发环境搭建
安装 DevEco Studio
从 OpenHarmony 官网 或 HarmonyOS 官网 下载 DevEco Studio。安装时选择合适的版本(本篇文章使用的是 DevEco Studio 4.0 release),并确保安装路径中不包含中文。
安装 Node.js 和 ohpm
DevEco Studio 会自动检测并提示安装 Node.js 和 ohpm(OpenHarmony 的包管理工具)。安装路径建议避开 C 盘。
配置 OpenHarmony SDK
打开 DevEco Studio,进入 SDK Manager,切换到 OpenHarmony SDK 并下载所需的 API 版本(本篇文章使用的是API 9)。确保 SDK 的安装路径与 HarmonyOS SDK 不同。
创建项目
打开 DevEco Studio,选择 Create Project,选择 [OpenHarmony] Empty Ability 模板,创建一个新的 OpenHarmony 项目。
RBAC系统实现
项目结构
在 entry/src/main/ets/default 目录下创建一个 rbac 文件夹,用于存放 RBAC 相关代码- entry/
- ├── src/
- │ ├── main/
- │ │ ├── ets/
- │ │ │ │── rbac/
- │ │ │ │ ├── User.ts
- │ │ │ │ ├── Role.ts
- │ │ │ │ ├── Permission.ts
- │ │ │ │ ├── RBAC.ts
- │ │ │ │ ├── index.ts
- │ │ │ ── pages/
- │ │ │ │ ├── index.ets
复制代码 定义 RBAC 数据结构
User.ts
- // 定义用户类
- import Role from './Role';
- class User {
- id: number;
- username: string;
- roles: Role[] = [];
- constructor(id: number, username: string) {
- this.id = id;
- this.username = username;
- }
- addRole(role: Role) {
- this.roles.push(role);
- }
- }
- export default User;
复制代码 Role.ts
- // 定义角色类
- import Permission from './Permission';
- class Role {
- id: number;
- name: string;
- permissions: Permission[] = [];
- constructor(id: number, name: string) {
- this.id = id;
- this.name = name;
- }
- addPermission(permission: Permission) {
- this.permissions.push(permission);
- }
- }
- export default Role;
复制代码 Permission.ts
- // 定义权限类
- class Permission {
- id: number;
- name: string;
- constructor(id: number, name: string) {
- this.id = id;
- this.name = name;
- }
- }
- export default Permission;
复制代码 RBAC.ts
- // RBAC.ts
- import User from "./User";
- import Role from "./Role";
- import Permission from "./Permission";
- export const users: User[] = []; // 导出users数组
- export const roles: Role[] = [];
- export const permissions: Permission[] = [];
- export function initializeData() {
- const readPermission = new Permission(1, "READ");
- const writePermission = new Permission(2, "WRITE");
- permissions.push(readPermission, writePermission);
- const adminRole = new Role(1, "Admin");
- const userRole = new Role(2, "User");
- adminRole.addPermission(readPermission);
- adminRole.addPermission(writePermission);
- userRole.addPermission(readPermission);
- roles.push(adminRole, userRole);
- const adminUser = new User(1, "admin");
- const normalUser = new User(2, "user");
- adminUser.addRole(adminRole);
- normalUser.addRole(userRole);
- users.push(adminUser, normalUser);
- }
- export function hasPermission(user: User, permissionName: string): boolean {
- for (const role of user.roles) {
- for (const permission of role.permissions) {
- if (permission.name === permissionName) {
- return true;
- }
- }
- }
- return false;
- }
复制代码 index.ts
- // RBAC模块的入口文件
- export * from "./User";
- export * from "./Role";
- export * from "./Permission";
- export * from "./RBAC";
复制代码 在主页面中调用 RBAC 模块
pages/index.ets
- // index.ets
- import { initializeData, hasPermission, users } from "../rbac";
- initializeData();
- @Entry
- @Component
- struct Index {
- build() {
- Column() {
- Text(`Admin has READ permission: ${hasPermission(users.find(user => user.username === "admin")!, "READ")}`)//True
- .fontSize(20)
- .textAlign(TextAlign.Center)
- Text(`Admin has WRITE permission: ${hasPermission(users.find(user => user.username === "admin")!, "WRITE")}`)//True
- .fontSize(20)
- .textAlign(TextAlign.Center)
- Text(`User has READ permission: ${hasPermission(users.find(user => user.username === "user")!, "READ")}`)//True
- .fontSize(20)
- .textAlign(TextAlign.Center)
- Text(`User has WRITE permission: ${hasPermission(users.find(user => user.username === "user")!, "WRITE")}`)//False
- .fontSize(20)
- .textAlign(TextAlign.Center)
- }
- .width("100%")
- .height("100%")
- }
- }
复制代码 运行与测试
运行项目
在 DevEco Studio 中,点击 Run 按钮运行项目。选择目标设备(如模拟器或真机)。
安装模拟器
打开 DevEco Studio,点击“Tools” > “Device Manager”。
在“Device Manager”中,点击“New Emulator”按钮创建新的模拟器。
选择设备模板(如“Huawei_Phone”),并根据需要配置模拟器参数(如内存大小)。
点击“Next”并完成模拟器镜像的下载。
启动模拟器
在“Device Manager”中,选择已创建的模拟器,点击“启动”按钮。
模拟器启动后,等待其完全加载并显示桌面。
运行应用
在 DevEco Studio 中,选择目标模拟器作为运行设备。
点击工具栏中的“Run”按钮(绿色三角形),编译并部署应用到模拟器。
应用将在模拟器上启动并运行。
结论
模拟器应用中的输出结果和pages/index.ts中预设的结果一致,测试通过,验证可以在 DevEco Studio 中实现并测试 OpenHarmony 的 RBAC 系统。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|