0

帆のポリシーを理解するのに問題があります。チュートリアルに従っていますが、まだ機能しません。

私のpolicies.jsファイルでは:

module.exports.policies = {
  '*':true,
  UsersController:{
    '*':false,
    signIn: 'skipAuthenticated'
  }
}

そして、私の authenticated.js ファイルで:

module.exports = function skipAuthenticated(req, res, ok){
  console.log("testing");
  if (req.session.authenticated){
    console.log("testing");
    return ok();
  }
  else {
    return res.send("You are not permitted to perform this action.", 403);
  }
}

しかし、ポリシーはトリガーされません。どんな助けでも本当に感謝しています。

4

4 に答える 4

3

ProductsController と LoginController があるとします。

policies.js 内:

module.exports.policies = {


    '*': true,
    login: {
        '*': true
    },
    products: {
        '*': 'isAuth',
        feed: true
    }

}

上記の例では:

「ログイン」コントローラー内のアクションには、誰でもアクセスできます。ただし、製品コントローラーでは、「フィード」以外の他のアクションは「isAuth」ポリシーを渡す必要があります。

于 2014-01-18T00:44:45.977 に答える
2

「ポリシーでコントローラーを保護するにはどうすればよいですか?」というタイトルのセクションをご覧ください。ポリシー名がapi/policies内のファイルの名前と一致することが記述されています。したがって、問題は、実際のポリシー名が「authenticated」(authenticated.js と言った) であり、ACL で使用しようとしているポリシー名が「skipAuthenticated」であることです。

したがって、ポリシー ファイル名を skipAuthenticated.js に変更するか、実際のポリシー名を反映するように ACL を変更できます。

http://sailsjs.org/#!documentation/policies

特定のコントローラーまたはアクションに 1 つ以上のポリシーを適用できます。/policies フォルダー内のすべてのファイル (たとえば、authenticated.js) は、そのファイル名から拡張子を除いたもの (たとえば、'authenticated') によって、ACL (config/policies.js) で参照できます。

于 2013-12-23T13:16:05.287 に答える
0

ファイル名が間違っていると思います.キャメルケースの名前を削除するのに役立たない場合は、authenticated.jsの名前をskipAuthenticated.jsに変更してみてください...キャメルケースにいくつか問題がありましたが、ポリシーにあったかどうか思い出せません

于 2013-10-08T10:03:55.210 に答える