2012-08-03 10 views
8

Ich bin neu in yii Rahmen. In meiner Website zeigt gii den Fehlergii funktioniert nicht in yii

Fehler 403 Sie sind nicht berechtigt, auf diese Seite zuzugreifen.

stellte ich die gii in der Konfigurationsdatei wie diese

'gii'=>array(
    'class'=>'system.gii.GiiModule', 
    'password'=>'test123', 
    'ipFilters'=>array('192.168.0.101','127.0.0.1','::1'), 
), 

zeigt es immer noch den Fehler

+3

können Sie die Ausgabe von 'Yii überprüfen :: app() -> request-> userHostAddress'? –

+0

Sind Sie bereits angemeldet, wenn Sie versuchen, auf 'gii' zuzugreifen? Haben Sie Änderungen an der 'UserIdentity.php' vorgenommen? –

+0

Versuchen Sie, Ihre yii App-Cookies zu entfernen !! http://www.yiiframework.com/forum/index.php/topic/9646-cant-get-past-gii-login-page/ – Nimir

Antwort

3

Um dies zu beheben, für die Module für Gii Abschnitt in Ihrer Hauptkonfigurationsdatei suchen, und fügen Sie ein

IPFilters Array, das die eigene IP beinhaltet:

// protected/config/main.php

return array (

... 

'modules' => array(

    'gii' => array(

     'class'  => 'system.gii.GiiModule', 

     'password' => 'Enter Your Password Here', 

     'ipFilters' => array('127.0.0.1', '192.168.1.7'), // EDIT TO TASTE 

    ), 

    ... 

Die IPFilters Eigenschaft können so viele Elemente enthalten, wie Sie möchten, und sie können gerade

IP-Adressen oder Platzhalter wie "192.168.1. *" Sein.

IPv6-Adressen werden auch unterstützt, wenn die zugrunde liegende Plattform unterstützt, und „:: 1“

darstellt localhost (die in einigen Konfigurationen erforderlich sein können).

Achten Sie darauf, dass Sie Gii nicht zu einem breiten Publikum öffnen, damit es nicht zu einem Sicherheitsrisiko wird.

Hinweis: Yü 1.1.6 fügt die Standardfilter direkt auf die Lager-Konfigurationsdatei:

// Wenn entfernt, defaults Gii nur auf localhost. Bearbeiten Sie sorgfältig nach Geschmack.

'ipFilters'=>array('127.0.0.1','::1'), 

Hoffnung gelöst Ihr Problem ..

+0

Ich habe bereits Artikel gelesen. Entsprechend fügte ich meine IP hinzu Aber es zeigt den Fehler –

0

Ich bekam den gleichen Fehler. Ich habe meine IP mit Yii::app()->request->userHostAddress überprüft; stellt sich heraus, dass dies eine IPv6-Adresse zurückgibt, die so ähnlich aussieht wie ab01::1. Dies ist möglicherweise das Verhalten, besonders wenn Sie Safari verwenden (unter OS X ... Chrome unter OS X zeigt die normale IP von 127.0.0.1. Seltsam seltsames Verhalten von diesen beiden WebKit-Browsern).

Also, setzen Sie einfach Yii::app()->request->userHostAddress in einem Ihrer Ansichten, und dann das Ergebnis aus der Ausgabe kopieren und fügen Sie ihn in config/main.php:

'gii'=>array(
     ... 
     // If removed, Gii defaults to localhost only. Edit carefully to taste. 
     'ipFilters'=>array('127.0.0.1','192.168.1.*','ab01::1','::1'), 
    ), 
10

Dies ist die einzige Linie, die für mich gearbeitet :

'ipFilters'=>array($_SERVER['REMOTE_ADDR']), 
+3

Erkennen Sie, dass dies ein Sicherheitsrisiko ist? IP-Filter gibt es aus einem bestimmten Grund. Was passiert, wenn diese Datei in ein Produktionssystem übergeht? – DCoder

+0

Dieser ist richtig! – joydesigner

+0

Dies ist ein Sicherheitsrisiko. Wenn Sie jedoch wissen, was Sie tun, und über ein starkes Zugriffspasswort verfügen, kann dies sehr nützlich sein. Danke für die Lösung. –

1

Nach der guten Antwort sandy8086. Wenn Ihr Remote-Host zweifach gestapelt ist (IPv6/IPv4), wird möglicherweise automatisch eine dynamische IPv6-Adresse in Ihrem Subnetzpräfixbereich zugewiesen.Die IPv4-Methode zur Verwendung eines Platzhalters '*' kann auch mit der IPv6-Adresse übernommen werden: 'ab01: 1234: 5678: abcd: *', wenn Sie ein Präfix/64 hätten, würde dies zu jeder Adresse in Ihrem IPv6-Netzwerk passen . Dies funktionierte für mich und wurde behoben, als ich Probleme mit dem 'Fehler 403' hatte und der Penny fiel, als ich mit Hilfe von Yii :: app() -> request-> userHostAddress entdeckte, dass ich über IPv6 verbunden war.

0

Ich hatte ein sehr ähnliches Problem. Für mich war es, dass mein Benutzerkonto keinen Schreibzugriff auf meinen PHP-Ordner session_save_path hatte. Als ich in Windows 7 dazu geblättert habe, sagte es mir, dass ich eine Erlaubnis brauche und es würde es gewähren, wenn ich OK wähle. Ich tat. Alles war behoben.

0

versuchen diese

'gii' => array(
     'class' => 'system.gii.GiiModule', 
     'password' => 'pasword', 
     'ipFilters'=> false, 
     'generatorPaths' => array(
      'bootstrap.gii' 
     ), 
    ), 
0

Überlegen Sie, wo Ihre Entwicklungsserver (gleiche Bearbeitungs, LAN, WAN) und wie Ihre IP-Adresse ändert auf dem Server befindet.

  1. Wenn Ihr Server auf derselben Maschine läuft wie Ihr Kunde hat (der Browser), fordern Sie die Seite vom lokalen Host selbst, damit Ihre IP-Adresse 127.0.0.1 ist und die Standardeinstellungen zu arbeiten.

  2. Wenn sich Ihr Server auf einem anderen Computer befindet, aber in Ihrem lokalen Netzwerk (LAN), würde Ihre IP-Adresse normalerweise so aussehen wie 192.168.1.20 für den Server. Sie können es finden und den Code anpassen.

  3. Wenn Ihr Server über das Web (WAN) ist, dann würden Sie haben entweder eine

    • statische IP-Adresse (wenn man Glück hat)
    • oder eine dynamische IP-Adresse innerhalb eines festgelegten Bereichs,
    • oder schlechter, eine mehr oder weniger unvorhersehbare dynamische IP-Adresse.

Nur wenn der allerletzte (unberechenbar dynamische IP-Adresse) der Fall ist, ich this answer von schmunk die darauf hinweist, auch das Risiko folgen würde.

Mit $_SERVER['REMOTE_ADDR'] scheint mir unnötig.

0

Stellen Sie sicher, dass es keine vorgenerierte Konfiguration am Ende der Konfigurationsdatei gibt.Diese werden überschreiben, was Sie hinzugefügt oben:

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

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

werden soll (Beispiel erlaubt jedermann):

if (YII_ENV_DEV) { 
    // configuration adjustments for 'dev' environment 
    $secure = ['allowedIPs' => ['*']]; 

    $config['bootstrap'][] = 'debug'; 
    $config['modules']['debug'] = ['class' => 'yii\debug\Module'] + $secure; 

    $config['bootstrap'][] = 'gii'; 
    $config['modules']['gii'] = ['class' => 'yii\gii\Module'] + $secure; 
} 
0
if (YII_ENV_DEV) { 

    $config['bootstrap'][] = 'debug'; 
    $config['modules']['debug'] = [ 
     'class' => 'yii\debug\Module', 
    ]; 

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

es nach ersetzen durch diesen Standardcode,

und Benutzer dieses url.

http://localhost/basic/web/index.php?r=gii

Verwandte Themen