除了内置的accounts
MDG包之外,我正在构建一个带有一些自定义身份验证的Meteor应用程序。
我希望在Meteor方法的前面调用一个函数来验证身份验证。如果身份验证失败,我想做相当于PHP的die()
函数 - 返回一条消息并停止执行。
我总是可以做这样的事情:if(!checkAuth()) return "Not Authenticated"
但是如果我能做checkAuth()
那就好了,如果不满足正确的权限,该函数会负责停止执行。
有办法做到这一点吗?
答案 0 :(得分:3)
简单的方法是抛出一个新的Meteor.Error
。如果not caught它将停止当前正在运行的函数,并且如果它从方法或订阅中抛出,它将出现在客户端。
function checkAuth(user) {
if(!isAuthenticated(user)) {
throw new Meteor.Error('not-authenticated', 'Users need to be authenticated to do foo')
}
}
上面抛出的错误服务器端将出现在客户端上,其中包含原因和详细信息。它允许您根据发生的任何事情定制错误处理。如果抛出任何其他类型的错误,它将显示为“500内部服务器错误”。
请注意,此机制类似于check
。您甚至可以使用自定义Match pattern:
check(user, MyPatterns.authenticatedUser)