如何在服务器端使用 meteor 实现基于角色的动态操作授权



我有一个应用程序,可以在其中创建多个动态角色。我还可以为每个角色分配一组操作,其中每个操作都是服务器端的发布者/方法。在这种情况下,我可以通过 alanning 来使用流星角色吗?

您需要做的就是在继续发布或方法之前检查用户是否具有角色。

发布示例:

import { Meteor } from 'meteor/meteor';
import { Roles } from 'meteor/alanning:roles';
import { Posts } from '/imports/api/posts/posts';
Meteor.publish('publicationName', function() {
    if(!Roles.userIsInRole(this.userId, 'administrator')) {
        throw new Meteor.Error('unauthorised', 'You cannot do this.');
    }
    return Posts.find();
});

方法示例:

import { Meteor } from 'meteor/meteor';
import { Roles } from 'meteor/alanning:roles';
import { Posts } from '/imports/api/posts/posts';
Meteor.methods({
    'remove.post':(id) => {
        if(!Roles.userIsInRole(this.userId, 'administrator')) {
            throw new Meteor.Error('unauthorised', 'You cannot do this.');
        }
        return Posts.remove(id);
    }
});

最新更新