2017-09-27 9 views
0

私は、組み込みユーザーモデルを拡張するCustomerモデルを持っています。しかし、正しいaccess_tokenを提供した後であっても、Update顧客へのPUTリクエストは全く機能しません。ループバックがPUTリクエストを使用してユーザー/顧客を更新できません

ログインエンドポイントを使用してユーザーとしてログインし、access_tokenを取得しました。顧客を更新する PUTリクエスト属性:

PUT http://localhost:3000/api/customers/59cb873ab21a902ab0afece1 

所有者が自分のレコードを更新することができるはずです、しかし、それは次のエラーを投げ続ける私の理解あたりとして:

また
{ 
    "error": { 
     "statusCode": 401, 
     "name": "Error", 
     "message": "Authorization Required" 
    } 
} 

、とき私はそれがうまく動作する同じaccess_tokenを使用して削除しようとします。

DELETE http://localhost:3000/api/customers/59cb873ab21a902ab0afece1 

customer.jsonファイルは以下のようになります。

私は間違っているつもりです
{ 
    "name": "customer", 
    "plural": "customers", 
    "base": "User", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "realm": null, 
    "emailVerified": null, 
    "name": { 
     "type": "string" 
    }, 
    "username": { 
     "type": "string" 
    }, 
    "cellnumber": { 
     "type": "string" 
    }, 
    "status": { 
     "type": "string" 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "accessTokens": { 
     "type": "hasMany", 
     "model": "accessToken", 
     "foreignKey": "userId" 
    } 
    }, 
    "acls": [ 
    ], 
    "methods": {}, 
    "replaceOnPUT": false 
} 

?この問題を解決するにはどうすればよいですか?

おかげ

答えて

0

あなたは、次の例のように、ACLをユーザーに提供しようとすることができ、これは動作します

"acls": [ 
    { 
     "accessType": "EXECUTE", 
     "principalType": "ROLE", 
     "principalId": "$authenticated", 
     "permission": "ALLOW" 
    }, { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "DENY" 
    } 
    ] 

希望。

+0

いいえ、動作しません。既定のユーザーモデルに既にACLがある場合、さらにACLを追加する方法は何ですか?問題は、デフォルトのACLが機能しないことです。 –

0

UserモデルのデフォルトACLは、POSTリクエストを除くすべてのリクエストで認証が必要です。問題はありません。

このモデルでGET、PUT/PATCHまたはDELETEリクエストを行うには、ログインしてリクエストにトークンを使用する必要があります。あなたのケースで

例:

  • POSTのような新しい顧客: { "username": "stack_user", "email": "[email protected]", "password":"stackoverflow" }。 at POST http://localhost:3000/api/customers/
  • 電子メールとパスワードを使用してログイン:{ "email": "[email protected]", "password":"stackoverflow" };

    IDがaccess_tokenはある
    { 
        "id": "jazSRZYbjJai3JeCYpb6u4nYsRGWbaQk5SK3nQPkMoNeUdrAYK3kYwaXECrfj6Vk", 
        "ttl": 1209600, 
        "created": "2017-09-29T11:44:16.111Z", 
        "userId": "59cb873ab21a902ab0afece1" 
    } 
    

    POST http://localhost:3000/api/customers/login

=>あなたのような応答を取得しますで 。

  • PUT http://localhost:3000/api/customers/59cb873ab21a902ab0afece1?access_token=jazSRZYbjJai3JeCYpb6u4nYsRGWbaQk5SK3nQPkMoNeUdrAYK3kYwaXECrfj6Vk

でそれを使用し、それが動作するはずです。


、あなたがこの行削除しようとすることができない場合は、次の

"replaceOnPUT": false 

をして、もう一度試してください?

+0

こんにちはF3LIX79、私は同じですが、それは動作しません。 replaceOnPutを削除しても役に立ちません。デフォルトのUserモデルを拡張すると問題になるようです。 –

+0

ブラウザページの右上隅にあるアクセストークンを設定することで、Swagger 'API Explorer'で機能させることはできますか? – F3L1X79

+0

いいえ.. API swaggerやPostmanのいずれかでアクセストークンを使用しても動作しません。 –

関連する問題