2009-06-09 6 views
2

J'ai une méthode dans users_controller.php de mon projet CakePHP qui est utilisée pour connecter à distance un utilisateur via un appel AJAX sur un site WordPress. La méthode fonctionne parfaitement lorsqu'elle est appelée via Firefox, mais lorsque j'essaie de l'appeler via AJAX ou directement depuis le navigateur dans IE8 ou Safari, elle ne se connecte simplement pas. La méthode Auth-> login() renvoie vrai comme si tout est bien, mais il ne se connecte pas. Des idées?CakePHP Auth Composant "login" Méthode Failure dans IE8 + Safari

function remoteLogin($key) 
{ 
    # this method should only be called via AJAX 
    $this->layout = 'ajax'; 

    $matching_key = '***'; 

    if($key == $matching_key) 
    { 
    # auto-login service account 
    $data['User']['username'] = '***'; 
    $data['User']['password'] = $this->Auth->password('***'); 

    $this->Auth->login($data); 
    } 
} 

Note: Je confirmé que cette méthode ne fonctionne pas dans Opera soit. Je suis légitimement confus.

+1

Qu'est-ce que , en particulier, est-ce que Firefox fait IE, etc. ne sont pas? L'interface utilisateur est-elle mise à jour après l'achèvement de cette fonction? En outre, il semble que cela puisse être un problème avec le javascript que vous utilisez pour appeler cette fonction plutôt que la fonction elle-même (si ce n'est que parce que c'est assez simple PHP qui semble bien). Plus de détails s'il vous plaît, ainsi que le javascript pertinent rendrait cela plus facile à diagnostiquer. – inkedmn

Répondre

0

Vous voudrez peut-être vérifier vos cookies et vous assurer qu'ils sont réussis comme prévu. Fiddler est utile pour voir le trafic http comme il se passe pour comprendre ces problèmes AJAX.

Est-ce que www.domain.com et domain.com vont au même endroit? Si c'est le cas, cela peut être lié à un problème CakePHP/IE que j'ai rencontré.

Supprimez tous les cookies de niveau de domaine et voir si cela fonctionne.

Dans IE n'importe quel domaine les cookies prendront la prépondérance sur les cookies de sous-domaine. Donc, si jamais vous recevez un cookie sur domain.com, puis sur www.domain.com, vous pouvez réinitialiser votre session, vous déconnecter tout au long de la journée, mais IE ignorera les cookies de www.domain.com et continuera à utiliser l'original. domain.com un. J'ai écrit un patch pour une ancienne version de Cake qui vous permet de définir/forcer la portée des cookies sur domain.com même lorsqu'ils accèdent au site www.domain.com pour contourner ce problème.

0

Ne pas maintenant sur IE8, mais Safari bloque ajax inter-domaines, même entre "frères et sœurs" sous le même domaine supérieur. PAR EXEMPLE. Vous ne pouvez pas demander à app.example.com de charger une div en utilisant ajax depuis helppages.example.com. Oubliez les cookies, je parle tout simplement html chargé en utilisant ajax.

0
  • Je pense que le problème est votre domaine. Ex: IE ou un navigateur ne fonctionne pas si votre domaine comme: abc_def.com, ...
  • S'il vous plaît vérifier votre domaine et changer comme abcdef.com => ce sera ok
Questions connexes