0

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)? [ 'profile' ] { '$set': { 'profile.name': 'ben', 'profile.gender': 'male' } }

これはまさに私が期待するものであり、ドキュメントを見るときに必要なもののようです。つまり、ユーザーが自分のプロファイルを編集しており、$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
4

1 に答える 1

0

完全な答えではありませんが、問題をすぐに解決するには、サーバー側のユーザー プロファイルを更新するメソッドを作成するだけです。ユーザーが自分のプロファイルを編集しようとしているだけであることを確認してください。

于 2015-07-08T08:11:18.423 に答える