当前位置: 首页> 健康> 知识 > ant design pro 如何处理权限管理

ant design pro 如何处理权限管理

时间:2025/7/11 19:48:39来源:https://blog.csdn.net/weixin_39637597/article/details/141361971 浏览次数:0次

在这里插入图片描述

  • ant design pro 如何去保存颜色
  • ant design pro v6 如何做好角色管理
  • ant design 的 tree 如何作为角色中的权限选择之一
  • ant design 的 tree 如何作为角色中的权限选择之二
  • ant design pro access.ts 是如何控制多角色的权限的
  • ant design pro 中用户的表单如何控制多个角色
  • ant design pro 如何实现动态菜单带上 icon 的
  • ant design pro 的表分层级如何处理

ant design pro 的前端去处理权限好处理的,弄个增删改查。直接去发请求就好。

主要是后端,如何存权限的信息,要存什么信息,如何验证。

import mongoose, { Document } from 'mongoose';
import { IPermissionGroup } from './permissionGroup';export interface IPermission extends Document {name: string;path: string;action: string;permissionGroup: IPermissionGroup;createdAt?: Date;updatedAt?: Date;
}const permissionSchema = new mongoose.Schema({name: { type: String, required: true },path: { type: String, required: true },action: { type: String, required: true },permissionGroup: { type: mongoose.Schema.Types.ObjectId, ref: 'PermissionGroup' },
}, { timestamps: true });const Permission = mongoose.model<IPermission>('Permission', permissionSchema);export default Permission;

name 是显示出来给看的,主要是 path action 这两个结合起来,来标明一个唯一的权限。

一个路径,一个 是请求方法。

在这里插入图片描述
如何去检查是否有权限呢。

const checkPermission = handleAsync(async (req: IRequest, res: Response, next: NextFunction) => {const { pageSize } = req.query as { pageSize?: string };if (pageSize && pageSize === '10000') {return next();}const path = req.baseUrl + req.route.path;const action = req.method;console.log('Checking path for permission', path);if (req.user.isAdmin) {return next();}if (allowedPaths.some((str) => path.startsWith(str))) {return next();}const roles = req.user.roles as { permissions: IPermission[] }[];if (roles.length === 0) {res.status(403);throw new Error('Access Denied');}const isAllowed = (permissions: IPermission[]) => {return permissions.some((permission) => {return permission.path === path && permission.action === action;});};if (roles.some((role) => isAllowed(role.permissions))) {next();} else {res.status(403);throw new Error('Access Denied');}},
);

这是个中间件,只要在路由里先用上就行,就是先检查一下是否有权限

首先如果是超级管理员,是直接跳过的。因为有所有的权限

if (req.user.isAdmin) {return next();
}

然后再判断是否有角色的,角色都没有,肯定没有权限了。

最后才是在所有角色里找到权限来判断,依据的标准是 path action 这两个。

刚好这两个我们是能取到的,在请求里取到值,跟用户存的数据库的数据匹配即可。

就是角色里的权限数据匹配。

所以 current user 是要存 roles, roles 里又要存权限的。

我们拥有 12 年建站编程经验

  1. 虚拟产品交易平台定制开发
  2. WordPress 外贸电商独立站建站

我的网站

关键字:ant design pro 如何处理权限管理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: