作为iOS开发人员,我对webdev很新.我正在研究Meteor并对路由有一些疑问 - 如果它们非常容易,我会道歉.
我正在使用Meteor Router程序包创建路由,但我想只有一些页面只能由admin用户访问.
Meteor.Router.add({
'/' : 'home',
'/admin' : 'admin'
});
Run Code Online (Sandbox Code Playgroud)
所以我有一个简单的路由设置如上,但我不知道如何限制访问/ admin路由.
它就像这样简单吗?什么是限制路径到/ admin页面并显示警告或甚至将它们重定向回/页面的好方法?
谢谢!
client.html
<head>
<title>My App</title>
</head>
<body>
{{renderPage}}
</body>
<template name="home">
{{greeting}}
</template>
<template name="admin">
{{greeting}}
</template>
Run Code Online (Sandbox Code Playgroud)
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";
}
};
Run Code Online (Sandbox Code Playgroud)
限制路由访问的最佳方法是使用路由器本身(而不是将问题推送到控制器).您有以下几种选择:
您可以使/admin路线看起来像:
'/admin': function() {
return {
as: 'admin',
to: function() {
if (Meteor.user() && Meteor.user().username === 'admin') {
return 'admin';
} else {
return 'unauthorized';
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
我假设你有一个unauthorized模板,可以呈现403页面或信息.
或者,您可以保留原始/admin路线并添加过滤器:
Meteor.Router.filters({
'needsAdmin': function(page) {
if (Meteor.user() && Meteor.user().username === 'admin') {
return page;
} else {
return 'unauthorized';
}
}
});
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
Meteor.Router.filter('needsAdmin', {only: 'admin'});
Run Code Online (Sandbox Code Playgroud)
就个人而言,我喜欢过滤器选项,因为它可以重复使用,而且更明显的是发生了什么.
| 归档时间: |
|
| 查看次数: |
5312 次 |
| 最近记录: |