我尝试使用meteor-angular更新用户的个人资料时获得403。不幸的是,它不是很具描述性 - 完整的错误是:
{
details: undefined
error: 403
errorType: "Meteor.Error"
message: "Access denied [403]"
reason: "Access denied"
}
我的印象是我不需要向服务器端添加任何内容,但我添加了以尝试了解实际更新请求的外观。
Meteor.users.deny {
update: (userId, user, fields, modifier) ->
console.log("meteor deny!")
console.log(userId, user._id)
console.log(fields, modifier)
false
}
Meteor.users.allow {
update: (userId, user, fields, modifier) ->
console.log("allow", arguments)
true
}
用于调试。在日志中,我看到了
I20150707-22:14:22.955(-6)?流星否认!
I20150707-22:14:22.956(-6)? Hk83p9hieEBYHhzo6 Hk83p9hieEBYHhzo6
I20150707-22:14:22.956(-6)? ['个人资料' ] {' $ set':{' profile.name':' ben',' profile.gender':'男&# 39; }}
这正是我期望看到的,并且看起来似乎是在查看文档时所需要的 - 即用户正在编辑他们自己的配置文件而$ set使用点符号。我从客户端触发更新,基本上使用非常普通的角度。有趣的是
....
$scope.user = $meteor.object $meteor.getCollectionByName("users"), $stateParams.userId
$scope.save = () ->
if $scope.form.$valid
$scope.user.save({ 'profile.name': $scope.user.profile.name, 'profile.gender': $scope.user.profile.gender}).then(
(numberOfDocs) ->
console.log 'save successful, docs affected ', numberOfDocs
(error) ->
console.log 'save error ', error
)
我对接下来的尝试感到茫然。我的包是
meteor-platform
urigo:angular
angularui:angular-ui-router
coffeescript
mquandalle:stylus
civilframe:angular-jade
twbs:bootstrap
angularui:angular-ui-bootstrap
mquandalle:bower
tmeasday:publish-counts
aldeed:collection2
angularutils:pagination
accounts-ui
okland:accounts-phone
accounts-base
答案 0 :(得分:0)
不是完整的答案,但要立即解决问题,只需创建一个更新用户配置文件服务器端的方法。只需检查用户是否只是想编辑自己的个人资料。