使用OpenHarmony简单验证rbac角色管理
·
如何使用 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 系统。
更多推荐
所有评论(0)