2

Yiiフレームワークのコントローラー/アクション( login / getなど)への直接アクセスを無効にし、 CUrlManagerを介してルーティングされた場合にのみアクセスできるようにします。

私の構成では、HTTPメソッドに応じてlogin/getおよびlogin /postへのログイン要求をルーティングしています。

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'caseSensitive' => false,
    'rules' => array(
        // Rewrite GET requests of "login" to "login/get", and POST requests to "login/post".
        array('login/post', 'pattern' => 'login', 'caseSensitive' => false, 'verb' => 'POST'),
        array('login/get',  'pattern' => 'login', 'caseSensitive' => false, 'verb' => 'GET'),
    ),
),

ログイン/取得およびログイン/投稿のリクエストを禁止する構成設定はありますか、またはそれらのリクエストをエラー/ 404などの場所にルーティングするのが最善の方法ですか?例えば:

array('error/404',  'pattern' => 'login/(get|post)(/.*)?')
4

1 に答える 1

0

独自のソリューションは問題なく機能します。UrlManagerはルールを上から下に要求するため、最初にGET/POSTを試行します。

したがって、完全な答えは

'rules' => array(
    // Rewrite GET requests of "login" to "login/get", and POST requests to "login/post".
    array('login/post', 'pattern' => 'login', 'caseSensitive' => false, 'verb' => 'POST'),
    array('login/get',  'pattern' => 'login', 'caseSensitive' => false, 'verb' => 'GET'),
    'login/post'=>'error/404',
    'login/get'=>'error/404',
),

おそらく、正規表現で指定したルールを使用できます

array('error/404',  'pattern' => 'login/(get|post)(/.*)?'
于 2013-01-18T07:54:36.107 に答える