使用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,选择 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 系统。
页:
[1]