generated fromwinjs-dev/winjs-plugin-template
- Notifications
You must be signed in to change notification settings - Fork0
A WinJS plugin that provides permission control for page resources.
License
NotificationsYou must be signed in to change notification settings
winjs-dev/winjs-plugin-access
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
适配 access(权限)的 WinJS 插件,适用于 Vue3。
- 🔐 基于角色的权限管理系统 (RBAC)
- 🚀 支持动态设置角色和权限
- 🛡️ 提供路由级别的权限控制
- 🎯 提供组件级别的权限控制(指令和组件)
- ⚡ 支持同步和异步权限检查
- 🔍 支持路径模式匹配(支持通配符)
- 📦 开箱即用,零配置启动
- 🔧 可配置的权限控制处理器
npm install @winner-fed/plugin-access
在.winrc.ts 中配置插件:
import{defineConfig}from'win';exportdefaultdefineConfig({plugins:[require.resolve('@winner-fed/plugin-access')],access:{roles:{admin:['/','/admin','/users/*'],normal:['/normal','/profile'],guest:['/login','/register']}}});
// src/app.tsimport{accessasaccessApi}from'winjs';// 设置默认角色accessApi.setRole('admin');exportconstaccess={noFoundHandler({ next}){// 处理404页面constaccessIds=accessApi.getAccess();if(!accessIds.includes('/404')){accessApi.setAccess(accessIds.concat(['/404']));}next('/404');},unAccessHandler({ next}){// 处理无权限访问next('/403');},ignoreAccess:['/login','/register']// 忽略权限检查的路由};
<template> <div><!-- 只有有权限的用户才能看到--> <divv-access="'/admin'">管理员内容</div><!-- 支持动态权限--> <divv-access="dynamicPath">动态内容</div><!-- 支持通配符--> <divv-access="'/users/*'">用户管理</div> </div></template><script setup>import {ref }from'vue';constdynamicPath=ref('/profile');</script>
<template> <div> <Accessid="/admin"> <template #default> <div>管理员专用功能</div> </template> </Access> </div></template>
<template> <div> <divv-if="hasAdminAccess">管理员功能</div> <divv-if="hasUserAccess">用户功能</div> </div></template><script setup>import {useAccess }from'winjs';consthasAdminAccess=useAccess('/admin');consthasUserAccess=useAccess('/users/*');</script>
import{access}from'winjs';// 设置角色access.setRole('admin');// 设置权限access.setAccess(['/admin','/users']);// 检查权限(异步)consthasAccess=awaitaccess.hasAccess('/admin');// 检查权限(同步)consthasAccessSync=access.hasAccessSync('/admin');// 获取当前角色constcurrentRole=access.getRole();// 获取当前权限列表constcurrentAccess=access.getAccess();// 路径匹配constisMatch=access.match('/users/profile',['/users/*']);// 设置预设权限access.setPresetAccess(['/public','/common']);
- 类型:
Record<string, string[]> - 描述:角色与权限的映射关系
- 类型:
(params: { router, to, from, next }) => void - 描述:404页面处理函数
- 类型:
(params: { router, to, from, next }) => void - 描述:无权限访问处理函数
- 类型:
string[] - 描述:忽略权限检查的路由列表
设置当前用户角色。
获取当前用户角色。
设置当前用户权限列表。
获取当前用户权限列表。
异步检查是否有指定路径的权限。
同步检查是否有指定路径的权限。
检查路径是否匹配权限列表。
设置预设权限。
检查权限数据是否准备就绪。
consthasAccess=useAccess(path:string|Ref<string>):Ref<boolean>
返回一个响应式的权限状态。
import{access}from'winjs';// 异步设置角色access.setRole(fetch('/api/user/role').then(res=>res.json()));// 异步设置权限access.setAccess(fetch('/api/user/permissions').then(res=>res.json()));
import{access}from'winjs';// 用户登录后更新权限functiononLogin(userInfo){access.setRole(userInfo.role);access.setAccess(userInfo.permissions);}// 用户登出后清空权限functiononLogout(){access.setRole('guest');access.setAccess([]);}
支持以下通配符模式:
/users/*- 匹配/users/下的所有路径/admin/*/edit- 匹配/admin/任意内容/edit格式的路径
// 预设权限 + 角色权限 + 动态权限access.setPresetAccess(['/public','/common']);access.setRole('admin');// 自动获取 admin 对应的权限access.setAccess(['/special']);// 额外的动态权限
MIT.
About
A WinJS plugin that provides permission control for page resources.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published