2012-08-03 31 views
8

Soy nuevo en yii framework. En mi sitio gii muestra el errorgii no funciona en yii

Error 403 No tiene permitido el acceso a esta página.

que establezca el GII en el archivo de configuración como esta

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

todavía se muestra el error

+3

se puede comprobar la salida de 'Yii :: aplicación() -> request-> userHostAddress'? –

+0

¿Ya inició sesión cuando intenta acceder a 'gii'? ¿Hiciste algún cambio en 'UserIdentity.php'? –

+0

¡Intente eliminar sus cookies de la aplicación yii! http://www.yiiframework.com/forum/index.php/topic/9646-cant-get-past-gii-login-page/ – Nimir

Respuesta

3

Para solucionar este problema, busque en el archivo de configuración principal para la sección de módulos de Gii, y añadir una

ipFilters matriz que incluye su propia IP:

// 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 

    ), 

    ... 

La propiedad ipFilters puede incluir tantos elementos como desee, y pueden ser rectas

direcciones IP o comodines como "192.168.1. *".

direcciones IPv6 son compatibles, así si la plataforma subyacente lo soporta, y ":: 1"

representa localhost (que puede ser necesario en algunas configuraciones).

Tenga cuidado de no abrir Gii a una audiencia demasiado amplia para que no se convierta en un riesgo de seguridad.

Nota: Yii 1.1.6 añade el filtro predeterminado directamente en el archivo de configuración:

// Si se ha sacado, por defecto Gii a localhost solamente. Edite cuidadosamente para probar.

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

esperanza resuelve su problema ..

+0

Ya leí el artículo. De acuerdo con esto, agregué mi IP pero muestra el error –

0

Me estaba saliendo el mismo error. Comprobé mi IP con Yii::app()->request->userHostAddress; Resulta que esto está devolviendo una dirección IPv6 que se parece a algo como este ab01::1. Este puede ser el comportamiento, especialmente si está utilizando Safari (en OS X ... Chrome en OS X muestra la IP 127.0.0.1 normal. Comportamiento extrañamente extraño de estos dos navegadores WebKit).

Así, en pocas palabras Yii::app()->request->userHostAddress en uno de sus puntos de vista, y luego copiar el resultado de la salida, y pegarlo en 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

Ésta es la única línea que funcionó para mí :

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

¿Se da cuenta de que esto es un riesgo de seguridad? Los filtros IP están ahí por una razón. ¿Qué pasa si ese archivo llega a un sistema de producción? – DCoder

+0

¡Esta es correcta! – joydesigner

+0

Este es un riesgo de seguridad, sin embargo, si está al tanto de lo que está haciendo y tiene una contraseña de acceso segura, esto puede ser muy útil. Gracias por la solución. –

1

A continuación de la buena respuesta de sandy8086. Si su host remoto tiene doble pila (IPv6/IPv4), entonces puede tener una dirección IPv6 dinámica asignada automáticamente en su rango de prefijo de subred.El método IPv4 de usar un comodín '*' también se puede adoptar con la dirección IPv6, por lo tanto: 'ab01: 1234: 5678: abcd: *', si tuviera un prefijo/64, coincidiría con cualquier dirección en su red IPv6 . Esto funcionó para mí y lo obtuve cuando tuve problemas con el 'Error 403' y el centavo cayó cuando descubrí, usando Yii :: app() -> request-> userHostAddress, que me estaba conectando a través de IPv6.

0

Tuve un problema muy similar. Para mí fue que mi cuenta de usuario no tenía acceso de escritura a mi carpeta PHP session_save_path. Cuando lo busqué en Windows 7, me dijo que necesitaba permiso y que lo otorgaría si elegía OK. Yo si. Todo fue arreglado.

0

probar esto

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

considerar dónde el servidor de desarrollo se encuentra (el mismo mecanizado, LAN, WAN) y cómo su dirección IP cambios hacia el servidor.

  1. Si el servidor se está ejecutando en la misma máquina que hace a su cliente (el navegador), solicitamos la página de la propia localhost, por tanto, su dirección IP es 127.0.0.1 y el trabajo de configuración por defecto.

  2. Si su servidor está en una máquina diferente pero en su red de área local (LAN), su dirección IP normalmente se parecería a esta 192.168.1.20 para el servidor. Puedes encontrarlo y ajustar el código.

  3. Si el servidor es a través de la web (WAN), entonces usted tendrá que o bien una dirección IP estática

    • (si tienes suerte)
    • o una dirección IP dinámica dentro de un rango fijo,
    • o peor, una dirección IP dinámica más o menos impredecible.

Sólo si el último (dirección IP dinámica impredecible) es el caso, me gustaría seguir this answer por schmunk que también señala el riesgo.

El uso de $_SERVER['REMOTE_ADDR'] me parece innecesario.

0

Asegúrate de que no haya configuración pregenerada en la parte inferior del archivo de configuración.Los que se sobreponen a lo que ha añadido anteriormente:

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'; 
} 

debe convertirse (ejemplo, permite que cualquier persona):

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', 
    ]; 
} 

Después de sustituirlo por el uso de este código por defecto,

y el usuario de este url.

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