6 Replies
  1. 9

    Semplicemente aggiungere il seguente all’inizio del SiteController indice di (in) azione:

    if(Yii::app()->user->getId()===null)
                $this->redirect(array('site/login'));

    Controlla se l’utente è connesso. Se non è questo il caso, la pagina verrà reindirizzata a login.

    Al fine di evitare qualsiasi azione a cui si accede da non utenti del sistema, è necessario modificare il accessRules() funzioni del controller:

    public function accessRules()
    {
        return array(
            array('allow',
                'actions'=>array(),
                'users'=>array('*'),
            ),
            array('allow', 
                'actions'=>array(),
                'users'=>array('@'),
            ),
            array('allow',
                                'actions'=>array(), 
                'users'=>array('admin'),
            ),
            array('deny',
                                'actions'=>array(), 
                'users'=>array('*'),
            ),
        );
    }

    In ogni controller, abbiamo che la funzione, e al suo interno ci sono quattro matrici. Ogni array dichiara una regola di accesso. Nel ‘azioni’ parametro che specifica le azioni che saranno interessati che la regola di accesso, e in “utenti” si specificare quali utenti saranno consentono di accedere alle azioni. ‘*’ significa che tutti gli utenti, autenticate o non autenticate. ‘@’ significa che solo gli utenti autenticati, ‘admin’ significa, naturalmente, solo admin membri.

    Se uno qualsiasi di ‘azioni’ parametri non ha un effettivo delle azioni assegnate, quindi basta eliminare di linea:

            array('allow',
                       'users'=>array('admin'),
            ), 
    Ha funzionato bene, ma solo per indice() azione. Un utente può url diretto (se conosci) per visualizzare le altre pagine, giusto ?
    Sì… In quel caso mi permetta di aggiornare la mia risposta…

    OriginaleL’autore Alfredo Castaneda Garcia

  2. 1

    Va bene, ho fatto finalmente.

    Qui c’è il codice, ho aggiunto alla sitecontroller.php

    public function filters()
    {
        return array(
            'accessControl',
        );
    }
    
    public function accessRules()
    {
        return array(
            array('allow',  //allow all users to perform only 'login' action
                'actions'=>array('login'),
                'users'=>array('*'),
            ),
            array('allow', //allow admin user to perform 'admin' AND 'delete' AND 'index' actions
                'actions'=>array('admin','delete','index'),
                'users'=>array('admin'),
            ),
            array('deny',  //deny all users
                'users'=>array('*'),
            ),
        );
    }

    Così, adesso funziona.

    grazie a tutti per le vostre preziose risposte

    OriginaleL’autore Darshit Gajjar

  3. 1

    Questo è lo stesso come sopra, ma come una componente in modo che deve essere fatto solo una volta e tutti i controller bisogno di sicurezza in grado di estendere questo componente.

    Di aggiungere un nuovo componente nella directory di componenti (SecurityController.php):

    <?php
    
    class SecurityController extends CController {
    
       public $breadcrumbs=array();
    
       public function filters()
       {
          return array(
             'accessControl',
          );
       }
    
       public function accessRules()
       {
          return array(
             array('allow',
                   //'actions'=>array('admin','delete','index'),
                   'users'=>array('admin', '@'),
             ),
             array('deny',  //deny all users
                   'users'=>array('*'),
             ),
          );
       }
    }

    Ora, assicuratevi che tutti i controllori che hanno bisogno di autenticazione eredita da SecurityController:

    <?php
    
    class JSController extends SecurityController {

    OriginaleL’autore user1279087

  4. 0

    È possibile controllare questo post

    Il soggetto speciale – Autenticazione e Autorizzazione

    Yii Wiki

    Campione di Blog App per il post controller

    Basta definire un filtro di controllo per il vostro index.php yiiframework.com/doc/guide/1.1/en/… come amministratore di pagine.
    Ho fatto secondo le modifiche e ora dà errore per il loop di redirect :/
    se ancora errore persits scrivere qui..aggiornamento yr ques..
    la soluzione data da alfredo sta lavorando molto bene, in base alle mie esigenze. Ma poi mi si avvicinò con un altro tema, che è: qualcuno può accedere ad altre pagine del sito utilizzando l’url diretto, (se lo sai) Quindi sto risolvere quel problema, in modo che nessuno possa accedere da un url diretto troppo..
    Se non hai ancora risolto il problema..aggiungere una nuova domanda..:)

    OriginaleL’autore Uday Sawant

  5. 0

    Quanto riguarda il SecurityController componente suggerimento :

    classe SecurityController estende CController

    Forse a causa di una versione più recente: ho dovuto prolungare il SecurityController da Controller per farlo funzionare. Ma allora funziona come un fascino

    OriginaleL’autore Sjaak

Lascia un commento