2014-10-11 22 views
11

Ho una macchina server e sto cercando di consentire al mio indirizzo IP del PC di utilizzare gii.Yii2 Gii Codice vietato 403 Non sei autorizzato ad accedere a questa pagina

il mio indirizzo IP del PC è 192.168.1.101

L'ip server macchina è 192.168.1.102.

Ho utilizzato composer per installare il gii module.

Ecco come il mio composer.json impostazioni assomigliano:

"require": { 
     "php": ">=5.4.0", 
     "yiisoft/yii2": "*", 
     "yiisoft/yii2-bootstrap": "*", 
     "yiisoft/yii2-swiftmailer": "*", 
     "yiisoft/yii2-gii": "*" 
    }, 
    "require-dev": { 
     "yiisoft/yii2-codeception": "*", 
     "yiisoft/yii2-debug": "*", 
     "yiisoft/yii2-gii": "*", 
     "yiisoft/yii2-faker": "*" 
    }, 

Ho usato php init e composer update e php yii migrate.

Ho anche effettuato il login nello frontend.

Questo è il contenuto del file main.php:

return [ 
    'id' => 'app-frontend', 
    'basePath' => dirname(__DIR__), 
    'bootstrap' => ['gii'], 
    'controllerNamespace' => 'frontend\controllers', 
    'components' => [ 
     'user' => [ 
      'identityClass' => 'common\models\User', 
      'enableAutoLogin' => true, 
     ], 
     'log' => [ 
      'traceLevel' => YII_DEBUG ? 3 : 0, 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
     'errorHandler' => [ 
      'errorAction' => 'site/error', 
     ], 
    ], 
    'params' => $params, 
    'modules' => [ 
     'gii' => [ 
      'class' => 'yii\gii\Module', 
      'allowedIPs' => ['127.0.0.1', '::1', '192.168.1.101'], 
      'password' => '123456' 
     ], 
    ], 
]; 

risposta

20

ho avuto un problema simile e provato tutti i diversi cambiamenti IPFilter passoword. Alla fine ho dovuto aggiungere questo a main-local.php. Il che era strano perché avevo un'applicazione avanzata, e le impostazioni erano per un setup 'yii2 basic'.
http://www.yiiframework.com/doc-2.0/guide-start-gii.html

if (!YII_ENV_TEST) { 
// configuration adjustments for 'dev' environment 
$config['bootstrap'][] = 'debug'; 
$config['modules']['debug'] = 'yii\debug\Module'; 

$config['bootstrap'][] = 'gii'; 
$config['modules']['gii'] = 'yii\gii\Module';} 

Vorrei anche sottolineare, ho aggiunto questo per main.php

'modules' => [ 
    'gii' => [ 
     'class' => 'yii\gii\Module', 
     'allowedIPs' => ['127.0.0.1', '::1', '192.168.1.*', 'XXX.XXX.XXX.XXX'] // adjust this to your needs 
    ], 
], 
+0

grazie. per me va bene. il collegamento è rotto – milkovsky

+0

vedere la mia risposta qui sotto, l'aggiunta di 'allowedIPs' in main-local.php dovrebbe essere sufficiente – michaK

+0

Ho avuto un problema simile quando ho caricato l'applicazione sul server di produzione, sembra che non si specifichi 'allowedIPs' in' $ config ['modules'] ['debug'] = ['it ** default su localhost **, quindi non sono stato possibile accedere a debug in produzione, risolto aggiungendo' allowedIPs' – Ripper

2

In caso di dubbio controllare i registri. C'è un avvertimento che dovrebbe dirti qualcosa come

10 06:00:19.040 warning yii\gii\Module::checkAccess Access to Gii is denied due to IP address restriction. The requested IP is 127.0.0.1 
11 06:00:19.041 error yii\web\HttpException:403 exception 'yii\web\ForbiddenHttpException' with message 'You are not allowed to access this page.' in ......./html/vendor/yiisoft/yii2-gii/Module.php:112 

Probabilmente ti stai sbagliando dell'Ip. Ho appena provato la configurazione che hai e funziona per me.

PS1: Non si dovrebbe abilitare Gii su un server, ma presumo che lo sappiate già e questo è ancora l'ambiente di sviluppo.

PS2: non v'è alcuna impostazione di GII in Yii2

1

ho trovato la risposta, e questo dovrebbe essere ben documentato dal team Yii!

Dopo aver usato il comando init, in /frontend/config/main-local.php, ho trovato:

if (!YII_ENV_TEST) { 
    // configuration adjustments for 'dev' environment 
    $config['bootstrap'][] = 'debug'; 
    $config['modules']['debug'] = 'yii\debug\Module'; 

    $config['bootstrap'][] = 'gii'; 
    $config['modules']['gii'] = 'yii\gii\Module'; 
} 

La mia app è in modalità dev, e Te sopra dichiarazione, si ferma il mio gii a lavorare, quindi ... commentare che la linea

7

nella versione attuale di Yii, si dovrebbe farlo in web.php per consentire l'accesso a Gii:

//$config['modules']['gii'] = 'yii\gii\Module'; // <--- replace this line 
$config['modules']['gii'] = [ 
    'class' => 'yii\gii\Module', 
    'allowedIPs' => ['XXX.XXX.XXX.XXX', 'YYY.YYY.YYY.YYY'] 
]; 
+0

corretto! In Yii 2.0 le impostazioni per IP consentiti devono essere incluse in web.php anziché in console.php – andreapavan

+1

Supponendo che si stia utilizzando Yii2 Basic, leggermente diverso per Yii2 Advanced Template. Non c'è web.php nel modello avanzato. – johnsnails

5

Dopo l'avvio nella modalità dev, ho dovuto modificare il mio \backend\config\main-local.php e aggiungere "allowedIPs".

Consente ALL IP, quindi consigliato solo per uso interno! Adatta alle tue esigenze.

$config['bootstrap'][] = 'gii'; 
$config['modules']['gii'] = [ 
    'class' => 'yii\gii\Module', 
    'allowedIPs' => ['*'], 
]; 
3

Cambia la tua /common/config/main-local.php come segue:

return [ 
    'components' => [ 
     'db' => [ 
      'class' => 'yii\db\Connection', 
      'dsn' => 'mysql:host=localhost;dbname=YourDatbase', 
      'username' => 'YourDBUserName', 
      'password' => 'YourDBPassword', 
      'charset' => 'utf8', 
     ], 
     'mailer' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      'viewPath' => '@common/mail', 
      // send all mails to a file by default. You have to set 
      // 'useFileTransport' to false and configure a transport 
      // for the mailer to send real emails. 
      'useFileTransport' => true, 
     ], 
    ], 
    // Add this to get debug and gii to work 
    'modules' => [ 
     'gii' => [ 
      'class' => 'yii\gii\Module', 
      // permits any and all IPs 
      // you should probably restrict this 
      'allowedIPs' => ['*'] 
     ], 
     'debug' => [ 
      'class' => 'yii\debug\Module', 
      // permits any and all IPs 
      // you should probably restrict this 
      'allowedIPs' => ['*'] 
     ] 
    ] 
]; 
1

Il codice ha funzionato per me (Yii 2.0.8) dopo l'aggiunta di un punto esclamativo prima YII_ENV_DEV (!) all'interno se parte ::

if (!YII_ENV_TEST) { 
    // configuration adjustments for 'dev' environment 
    $config['bootstrap'][] = 'debug'; 
    $config['modules']['debug'] = [ 
      'class' => 'yii\debug\Module', 
    ]; 
    $config['modules']['debug']['allowedIPs'] = ['*']; 

    $config['bootstrap'][] = 'gii'; 
    $config['modules']['gii'] = [ 
      'class' => 'yii\gii\Module', 
    ]; 
    $config['modules']['gii']['allowedIPs'] = ['*']; 

} 
Problemi correlati