2017-02-10 3 views
1

ループバックを使用してSPAのWebサイト用の簡単なAPIを作成しています。私は、できるだけ簡単に、私の権限を維持したいので、私はいくつかのモデルでは、いくつかの方法は、誰もすべてのメソッドがある ユーザモデルのループバックACL

  • のために許可されている
  • すべての権限は、デフォルトで拒否され

    • 、次のACLモデルになってしまいました許可されたユーザーに許可されています

    私は複数のユーザーを作成し、誰もユーザーを作成または変更できない場合、これは明らかに機能します。組み込みのUserモデルのアクセス許可を明示的に変更できないため、Userに拡張されたadminモデルを作成しました。次に、のモデルをUserというモデルのプロパティをfalseに設定しました。私はそれを見るように、それはlogin以外の任意のメソッドに任意のunathorizedユーザーアクセスを拒否すべき次のACLルールに

    { 
        "accessType": "*", 
        "principalType": "ROLE", 
        "principalId": "$everyone", 
        "permission": "DENY" 
    }, 
    { 
        "accessType": "EXECUTE", 
        "principalType": "ROLE", 
        "principalId": "$everyone", 
        "permission": "ALLOW", 
        "property": "login" 
    }, 
    { 
        "accessType": "*", 
        "principalType": "ROLE", 
        "principalId": "$authenticated", 
        "permission": "ALLOW" 
    } 
    

    を設定します。

    残念ながら、それはどのように動作しますか、誰でもまだ/ usersにPOSTして新しいユーザーを作成できます。私の推測では、ACLルールは継承モデルには適用されないので、ここではUserのルールが適用されます。だから正方形に戻って、Userのパーミッションを直接変更したり、オーバーライドすることはできません。

    ここには何がありますか?新しいユーザーの作成を防ぐ方法はありませんか?

  • 答えて

    1

    明らかになったように、ルールの詳細は継承レベル以上のものです。この場合、Userモデルでは、具体的にはcreateプロパティのルールが定義されています。このルールは、拒否ルールが拡張adminモデルで定義されていても、すべてのプロパティをより一般的に拒否するよりも優先されます。だから私はUserモデルからすべての許可されたルールを取って、adminで明示的に拒否しなければなりませんでした。

    関連する問題