gpt4 book ai didi

javascript - 在 Meteor.js 中为不同用户提供不同版本的网站

转载 作者:行者123 更新时间:2023-12-03 11:25:13 25 4
gpt4 key购买 nike

在 Meteor.js 中,通常如何分配不同的用户(例如,取决于 users 集合中的字段 role,该字段可以具有诸如 admin 之类的值用户测试人员)网站的不同版本(客户端和服务器端)?

最佳答案

首先,我使用 Iron Router 进行路由。在某些时候,我可能会放弃它并编写自己的代码,至少对于这个项目来说是这样,因为我没有使用一半的功能,但现在这就是我所拥有的。

对于 Angular 色,我使用 alanning:roles 包。再说一遍,我可能可以自己编写,但它现在也能满足我的需要,所以我对此感到满意。

接下来我有一个我编写的自定义包。在其中,我设置了一个用于登录和注销的模板,以及路由等。我还提供了一个实用程序类,它提供了一个名为 authenticationRequired 的函数。此函数将检查当前用户是否已登录,以及是否传递了 Angular 色以表明他们具有这些 Angular 色。代码如下所示:

AccountUtils.authenticationRequired = function(router, roles) {
if (!router) {
throw new Meteor.Error(500, 'Router is a required parameter');
}

if (!Meteor.loggingIn()) {
var currUser = Meteor.user();
if (currUser) {
if (roles) {
if (!Roles.userIsInRole(currUser, roles)) {
console.log('User was not in the required roles: %j, %j', currUser.roles, roles);
//throw new Meteor.Error(403, 'Access Denied');
Router.go('notAuthorized');
}
}
} else {
console.log('User not found');
Router.go(AccountUtils.settings.signinRoute);
}
}
}

现在,在我的 Router 路由器中,我执行以下操作:

this.route('admin', {
path: '/admin',
onBeforeAction: function() { AccountUtils.authenticationRequired(this, ['ADMIN']); }
});

所有这一切都有一些变化的部分,但这就是笑话。在路由的onBeforeAction中,检查用户是否具有所需的 Angular 色。如果没有,请将它们发送到 notAuthorize 页面。如果是的话,就让他们过去。我仍然缺少一些我尚未在这段代码中解决的部分,但它在大多数情况下都有效。

希望这能为您提供一个起点。

关于javascript - 在 Meteor.js 中为不同用户提供不同版本的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com