在Meteor.js中为不同的用户提供不同版本的网站
Serving different version of website to different users in Meteor.js
在 Meteor.js 中,通常如何为不同的用户(例如取决于 users
集合中的字段role
,该集合可以具有 admin
、users
、testers
等值)提供不同版本的站点(客户端和服务器端)?
首先,我使用铁路由器进行路由。 在某些时候,我可能会放弃它并编写自己的代码,至少对于这个项目,因为我没有使用一半的功能,但现在这就是我所拥有的。
对于角色,我使用的是alanning:roles
包。 同样,我可能会写我自己的,但它现在也可以做我需要的,所以我对它很满意。
接下来,我有一个我编写的自定义包。在其中,我设置了一个用于登录和注销的模板,其中包含路由等。 我还提供了一个名为 authenticationRequired
的实用程序类。 此函数将检查当前用户是否已登录,以及是否传递了具有这些角色的角色。 代码如下所示:
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 中,检查用户是否具有所需的角色。 如果没有,请将它们发送到 notAuthorization 页面。 如果是,请让他们通过。 我仍然缺少一些我尚未在此代码中解决的部分,但它在大多数情况下都有效。
希望这能给你一个起点。
相关文章:
- 根据语言首选项更改网站版本
- 正在从这些网站复制基本版本
- 我使用谷歌标签管理器在我的网站上启动标签.变量“;未定义的“;在任何版本的Internet Explorer的自定义代码
- jquery.min.js版本冲突在asp.net网站中不起作用
- AngularJS 网站示例无法执行(版本 1.2.0)
- 在一个网站上使用两个不同版本的现代化
- 删除网站的移动版本的标记部分
- 我的网站中是否需要 jQuery 脚本的非缩小版本
- 需要让我的网站与代码笔版本相同
- 网站 - 在进行更改后不断恢复到旧版本
- 在Meteor.js中为不同的用户提供不同版本的网站
- 如何在Magento电子商务网站版本1.3.2.4中包含带有脚本的自定义js文件
- 是否有一种方法可以强制网站加载较轻的版本
- 哪个版本的jQuery正在加载多个库的网站上运行
- 如何将移动用户重定向到我网站的移动版本
- 在需要时无缝启动网站的移动版本
- 如果一个页面或网站已经有一个版本的Jquery chrome扩展失败.我想Jquery选择脚本
- 有条件切换到网站的移动版本
- 检查我的网站在不同的浏览器版本的移动友好
- 网站提供旧/贬值版本的javascript文件,而不是更新的一个