2011-07-12 13 views
2

簡単な質問:関数がアプリケーション内から呼び出されていることを確認する最良の方法は何ですか?誰もURLを入力して実行できないようにしたいだけです。CakePHPでの関数へのアクセスを制御する最良の方法

私が認証を使用する方法について考えてきましたが、私は実際にユーザー名/パスワード保護を必要としません。それで私はプライベート/保護された機能について考えましたが、私はCakePHPがこれをうまく扱えないことを読んだことがあります。私がプライベートを使用する場合、例として、別のコントローラクラスから保護された関数を呼び出すことはできません。

私はこれを単に解決策がなければならないと思うが、私は1つを考えることはできません。

ありがとうございます。 :)

+0

はあなたが教えてください。私はいつもそれを(PHP 5で)使ってきましたが、決して問題はありませんでした。アンダースコアの接頭辞と同じように機能します。 「他のコントローラクラスから保護された関数を呼び出すことができない」と言うとき、別のコントローラの中でコントローラをインスタンス化していますか?その場合は、@pleasedontbelongと@ElGabbuのように、コンポーネントを使用する必要があります。 – bfavaretto

答えて

3

異なるコントローラで使用されている関数がある場合は、コンポーネントを作成する方がよいでしょう。

class ProductsController extends AppController { 

    // a browser can "access" this method 
    function iHaveAView(){ 
    } 

    // this method is used only by controllers 
    function _cantTouchMe(){ 
    } 

グッドラック

:あなたは本当に..あなたは、あなたのメソッドの名前の先頭にアンダースコアを追加してアクセスを設定することができますしたい場合は、あなたが本当に..する必要がある場合

しかし....

EDITED:(最終的にはこれに関するドキュメントを見つけた)

あなたはまた、 pでのCakePHPのコントローラメソッドの可視性を変更することができますコントローラーメソッド名をアンダースコアでリフィックスします。コントローラー メソッドの先頭にアンダースコアが付いている場合、メソッドは に直接アクセスすることはできませんが、内部で使用することができます。

ソース:あなたはケーキが保護/プライベートに問題があることを読んでどこController Conventions

+0

これは私が探していたものです。あなたは私の質問に答え、私が間違っていたことについてのヒントを教えてくれました。どうもありがとうございます! :D – dccarmo

1

コントローラのアクションとして機能を入れないのは簡単だと思います。コンポーネントを作成し、必要なときに使用します。あなたの関数は、公衆に利用できないが、アプリ内で利用可能になるだろう

あなたはどう思いますか?

+0

はい、これは間違いなく私が探していたものです。ありがとう! – dccarmo

関連する問題