Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么角色不检查userIsInRole?_Javascript_Meteor_Roles - Fatal编程技术网

Javascript 为什么角色不检查userIsInRole?

Javascript 为什么角色不检查userIsInRole?,javascript,meteor,roles,Javascript,Meteor,Roles,我在项目中使用Meteor和alanning:roles作为用户角色。我正在尝试检查登录的用户是否具有管理员权限。 我已经试过了所有的方法。 该检查返回false。我在alanning:roles的自述中做了如下操作: //服务器/init.js 变量用户=[ {名称:“普通用户”,电子邮件:normal@ehnormal.com.br“,角色:[]}, {姓名:“Usuario Secreto”,电子邮件:mauriciord@me.com,角色:['view-secrets']}, {姓名:

我在项目中使用Meteor和alanning:roles作为用户角色。我正在尝试检查登录的用户是否具有管理员权限。 我已经试过了所有的方法。 该检查返回false。
我在alanning:roles的自述中做了如下操作:

//服务器/init.js
变量用户=[
{名称:“普通用户”,电子邮件:normal@ehnormal.com.br“,角色:[]},
{姓名:“Usuario Secreto”,电子邮件:mauriciord@me.com,角色:['view-secrets']},
{姓名:“Usuario Gerenciador”,电子邮件:mauricioreattoduarte@gmail.com,角色:['manage-users']},
{姓名:“毛里西奥”,电子邮件:mauricio@thcm.com.br,角色:['admin']}
];
_.每个(用户、功能(用户){
变量id;
id=Accounts.createUser({
电子邮件:user.email,
密码:“apple1”,
配置文件:{name:user.name}
});
如果(user.roles.length>0){
//需要现有用户记录的\u id,因此此呼叫必须进行
//在“Accounts.createUser”或“Accounts.onCreate”之后`
//Roles.addUsersToRoles(id,user.Roles,“默认组”);
update({u id:id},{$set:{'emails.0.verified':true});
控制台日志(“usuario criado”);
Roles.addUsersToRoles(id,user.Roles,“默认组”);
//Roles.addUsersToRoles(id,user.Roles);
}
});
正如自述中所说:

//server/publish.js
Meteor.publish(null,函数(){
返回Meteor.roles.find({})
});
但当我尝试在routes.js中检查用户权限时:请参见我的存储库。

//lib/routes.js
var logado=FlowRouter.group({
名称:'LogadRoutes',
//se não estiver logado vai para/登录
triggersEnter:[函数(上下文,重定向){
log('logado grupo');
如果(!Meteor.userId()){
FlowRouter.go('login');
}否则{
返回true;
}
}]
});    
var admin=logado.group({
前缀:'/admin',
名称:“adminRoutes”,
triggersEnter:[函数(上下文,重定向){
var loggedInUser=Meteor.userId();
log('verificando admin…');
if(Roles.userIsInRole(loggedInUser,['view-secrets','admin'],“默认组”)){
返回true;
log('e admin-rotas');
}
console.log('nãoéadmin-rotas');
抛出新的流星。错误(403,“Acesso Negado”);
}]
});
这是我的存储库:
套餐:

更新:我用
isInRole
更改了布局(原来是
ifInRole
),现在它可以工作了。 我试图验证routes.js上的条件,只需在导航栏的URL上按“Enter”。localhost:3000/admin,但是当我通过锚链接走这条路线时,条件100%起作用了,哈哈。如果我做了这个:

if(Roles.subscription.ready()&&Roles.userIsInRole(loggedInUser,['admin'],'defaultgroup')){
返回true;
log('e admin-rotas');
}

我不知道为什么,我是MeteorJS新手。

在您的角色检查中,您正在检查组:
“default-group”
(带空格)而不是
“default group”
。这有什么原因吗?嘿@challett,刚才在编辑器里。我已经更新了代码,现在正在运行,但我不知道为什么当我在导航栏上按“回车”时,条件不起作用。这可能是因为你是如何处理重定向的。抱歉@challett,但我不知道在哪里!在检查用户角色之前,请尝试添加对Meteor.isLoggin()的检查。我不熟悉FlowRouter,所以我现在不能给你一个具体的解决方案,但这很可能是因为当你通过URL进入页面时,meteor登录了用户
meteor-base             # Packages every Meteor app needs to have
mobile-experience       # Packages for a great mobile UX
mongo                   # The database Meteor supports right now
blaze-html-templates    # Compile .html files into Meteor Blaze views
session                 # Client-side reactive dictionary for your app
jquery                  # Helpful client-side library
tracker                 # Meteor's client-side reactive programming library
standard-minifiers      # JS/CSS minifiers run for production mode
es5-shim                # ECMAScript 5 compatibility for older browsers.
ecmascript              # Enable ECMAScript2015+ syntax in app code
kadira:flow-router
kadira:blaze-layout
erasaur:meteor-lodash
stolinski:stylus-multi
fortawesome:fontawesome
spiderable
fastclick
raix:handlebar-helpers
aldeed:collection2
aldeed:autoform
accounts-ui
accounts-password
matb33:bootstrap-glyphicons
zimme:active-route
gwendall:auth-client-callbacks
meteortoys:allthings
datariot:ganalytics
check
twbs:bootstrap
less
arillo:flow-router-helpers
alanning:roles