2010-11-16 12 views
0

Je sais que cela semble très bête, mais nous avons un client qui envoie des bulletins d'information. Mais le marché cible étant extrêmement analphabète, le client nous demande d'intégrer les informations de connexion dans les urls de la newsletter afin que les utilisateurs puissent se connecter automatiquement dans le front-end de Joomla. Ce que j'ai proposé est que nous faisons simplement un script qui obtient le nom d'utilisateur et mot de passe de l'URL en utilisant $ _GET et comment puis-je le transmettre à l'objet $ my qui est créé seulement une fois que l'utilisateur se connecte Joomla page de connexion? De toute évidence, je ne reçois pas tout ce qui est lié au code, mais le concept reste le même, nous voulons automatiquement connecter les utilisateurs en utilisant une URL et ensuite, si cela pouvait les rediriger vers la page qu'ils voulaient dans un balayage.

Merci d'avance pour des commentaires & avis.

+1

Vous pouvez écrire un plugin d'authentification pour gérer cela pour vous. Mais je dois vous avertir que ce que vous demandez de faire pourrait être abusé et peut conduire à des problèmes ... Que se passe-t-il si quelqu'un envoie le courriel à un ami? Ensuite, ils sont automatiquement connectés en tant que cette personne? Je chercherais une autre solution, ou au moins j'essayerais de définir le problème ... – ircmaxell

+0

C'est stupide en termes de sécurité. –

+3

Je ne peux pas vous aider avec Joomla, mais il vaudra mieux que vous m'envoyiez une sorte d'utilisation - une fois unique - et une identification en utilisant cela. Je ne reviendrais pas sur un site qui a placé mon nom d'utilisateur et mon mot de passe en texte brut à l'adresse URL. – acm

Répondre

2

C'est terrible en termes de sécurité, mais tout ce que vous aurez besoin de faire est de passer

login.php?username=X&password=Y 

Et changer votre login pour accepter _REQUEST $ au lieu de $ _POST

$username = $_REQUEST['username']; 
$password = $_REQUEST['password']; 

$loggedIn = User::Login($username, $password); 

Mais encore une fois , c'est TERRIBLE du point de vue de la sécurité.

Si vous avez vraiment besoin d'un moyen rapide de le faire, vous devriez envisager de leur envoyer un courriel contenant un peu de sel et leur nom d'utilisateur, puis les consigner de cette façon. Quelque chose comme ceci:

login.php?user=aw48hgghsudghaw9eg 

Puis

$hash = $_GET['user']; 
$result = mysql_query("SELECT username, password 
         FROM users 
         WHERE md5("SALT_STRING", username) = $hash"); 
if (mysql_num_rows($result)) { 
    $row = mysql_result($result); 
    $loggedIn = User::Login($row['username'], $row['$password']); 
} 

ou quelque chose de similaire.

+0

Même si ce n'est pas génial IMHO (Depuis si quelqu'un trouve votre sel, ils peuvent se connecter comme ils le souhaitent) ... Je préfère voir un jeton à usage unique généré qui est stocké dans une autre table (qui est retiré une fois qu'il est utilisé). Encore une fois, je préfère ne pas voir ce fait du tout, car il en quelque sorte défait le but de l'authentification en premier lieu ... – ircmaxell

+0

Je suis d'accord avec vous complètement sur les deux fronts o.O Aussi, merci pour l'édition. – sent1nel

+0

+1 pour votre effort et les avertissements sur la sécurité – acm

1
 $mainframe = JFactory::getApplication(); 
     $credentials = array(); 
     $credentials['username'] = $app->input->get('username', '', 'string'); 
     $credentials['password'] = $app->input->get('password', '', 'raw'); 
     $mainframe->login($credentials); 
     //$mainframe->redirect(JRoute::_('index.php', false));