gpt4 book ai didi

meteor - 如何在 Meteor 中限制到管理员用户的路由?

转载 作者:行者123 更新时间:2023-12-04 06:40:14 25 4
gpt4 key购买 nike

作为一名 iOS 开发人员,我对 webdev 很陌生。我正在研究 Meteor 并有一些关于路由的问题——如果它们很容易,我很抱歉。

我正在使用 Meteor Router 包来创建路由,但我希望某些页面只能由管理员用户访问。

  Meteor.Router.add({
'/' : 'home',
'/admin' : 'admin'
});

所以我有一个简单的路由设置,但我不确定如何限制对/admin 路由的访问。

像这样简单吗?将路由限制到/admin 页面并显示警告或什至将它们重定向回/页面的好方法是什么?

谢谢!

client.html
<head>
<title>My App</title>
</head>

<body>
{{renderPage}}
</body>

<template name="home">
{{greeting}}
</template>

<template name="admin">
{{greeting}}
</template>

client.js
Template.admin.greeting = function () {
var currentUser = Meteor.user();
if (null !== currentUser && 'admin' === currentUser.username) {
return "Hello Admin!";
}
else{
return "Sorry, only admins can see this page";
}
};

最佳答案

限制对路由的访问的最佳方法是使用路由器本身(而不是将问题推给 Controller )​​。您有几种选择来执行此操作:
路由功能
您可以制作 /admin路线看起来像:

'/admin': function() {
return {
as: 'admin',
to: function() {
if (Meteor.user() && Meteor.user().username === 'admin') {
return 'admin';
} else {
return 'unauthorized';
}
}
};
}
我假设你有一个 unauthorized呈现 403 的模板页面或一些信息。
筛选
或者,您可以留下您原来的 /admin原样路由并添加过滤器:
Meteor.Router.filters({
'needsAdmin': function(page) {
if (Meteor.user() && Meteor.user().username === 'admin') {
return page;
} else {
return 'unauthorized';
}
}
});
并像这样使用它:
Meteor.Router.filter('needsAdmin', {only: 'admin'});
就我个人而言,我喜欢过滤器选项,因为它可以重复使用,而且发生的事情更明显一些。

关于meteor - 如何在 Meteor 中限制到管理员用户的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035780/

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