Éviter de CakePHP composant Auth pour afficher l'authentification des messages d'erreur

Je voudrais me débarrasser de composant Auth messages d'erreur, spécialement le authError message qui vient à chaque fois que j'essaie d'accéder à un non-permis d'action.

Juste pour être sûr, j'ai vérifier qu'il n'y a pas de $this->Session->flash() appeler de n'importe où dans la mise en page. En outre, le réglage de la valeur est vide ne fonctionne pas, que le composant a une valeur par défaut valeur de message.

Je suis en utilisant le composant Auth avec la configuration suivante dans la classe AppController:

class AppController extends Controller {
    var $components = array(
        'Auth' => array(
            'userModel' => 'WebUser',
            'loginAction' => '/login',
            'loginRedirect' => '/',
            'logoutRedirect' => '/login',
            'autoRedirect' => false,
        ),
        'Session',
        ...
     ...
}

Pour connexion et déconnexion les redirections que j'ai mis deux itinéraires:

Router::connect('/', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/login', array('controller' => 'web_users', 'action' => 'login'));

La connexion action au sein de WebUser contrôleur est presque vide; j'ai seulement changer la mise en page par défaut:

function login() {
    $this->layout = 'login';
    $this->set('title_for_layout', 'Sign in');
}

Enfin, j'ai une question très simple de connexion.ctp fichier de mise en page:

<html>
    <head>
        ...
    </head>
    <body>
        ...
        <?php echo $content_for_layout; ?>
        ...
    </body>
</html>

Quand j'ai accès http://example.com/login il n'y a pas de problème, pas de message, juste le formulaire de connexion. Mais j'ai le défaut authError message lors de la demande de toute autre action, juste après le composant Auth redirige vers la connexion action. Deux questions se posent:

  1. Pourquoi le composant Auth l'affichage des messages flash quand il n'y a pas de $this->Session->flash() appeler de n'importe où? (voir mise à jour 2 ci-dessous)
  2. Comment puis-je configurer un vide/valeur null dans authError attribut?

Merci!

Mise à JOUR

Je suis venu avec un vraiment laid solution: j'ai créé un élément login_error.ctp et affecté à la flashElement attribut du composant Auth initialisation:

class AppController extends Controller {
    var $components = array(
        'Auth' => array(
            'flashElement' => 'login_error',
        ...
     ...
}

Dans login_error.ctp je viens de comparer avec le authError de message par défaut:

<?php if ( $message !== 'You are not authorized to access that location.' ): ?>
<div id="flashMessage" class="message"><?php echo $message; ?></div>
<?php endif; ?>

Il fonctionne, mais je le déteste!

Mise à JOUR 2

Grâce à dogmatic69 de réponse, je me suis forcé à tout vérifier de nouveau. J'ai enfin trouvé d'où l'appel à $this->Session->flash() a été faite. Il était sur un petit élément de vue que j'avais écrit avant. Il n'avait rien à voir avec la connexion/déconnexion des trucs alors que je n'avais pas fait attention à ce fichier.

Mise à JOUR 3

Grâce à SpawnCxy répondre ainsi. La copie du composant Auth et de faire des modifications, c'est une meilleure approche de comparaison de chaînes de caractères.

Quel est exactement le message affiché?
La valeur par défaut définie dans le composant Auth: "Vous n'êtes pas autorisé à accéder à cet emplacement.'. Bien sûr, je vais essayer d'éviter de remplacer le composant 🙂

OriginalL'auteur elitalon | 2011-02-09