2015-09-30 1 views
0

Je développe un site de commerce électronique où je dois gérer des parties frontend et backend des applications. Par conséquent, je vais gérer les connexions des clients et les connexions des utilisateurs admin. Comme il s'agit d'un site de commerce électronique, la plupart des gens recommandent de stocker les utilisateurs et les clients séparément en tenant compte de la sécurité. Si ce n'était pas le type de commerce électronique, j'irais avec la méthode des groupes d'utilisateurs et stocker tous les utilisateurs dans une seule table d'utilisateur et gérer les privilèges en conséquence.Utilisation de CI Ion Auth pour une application frontend/backend

Mon problème est de savoir comment utiliser la même bibliothèque d'authentification Ion Auth pour le frontend et le backend tout en gardant la table client et la table utilisateur séparément. Vous pouvez comprendre que le problème sous-jacente est la gestion des sessions client et administrateur avec la même bibliothèque d'auth.

Je pense que HMVC ne peut pas non plus résoudre ce problème. Actuellement, je pense à dupliquer le dossier de l'application ou à développer deux applications CI autonomes pour le frontend et le backend.

J'ai très peu d'expérience dans ce type d'applications. Quelqu'un peut-il me guider vers le bon chemin? Merci d'avance.

Répondre

0

La modification de la table utilisée par ion_auth pour authentifier les 'utilisateurs' peut être facilement réalisée. Et cela peut être fait dynamiquement au moment de l'exécution.

Le nom de la table utilisée pour l'authentification est défini dans le fichier de configuration application \ config \ ion_auth.php avec cette ligne de code.

$config['tables']['users'] = 'users'; 

Cependant, le nom de la table par défaut peut être ce que vous voulez. Si, dans la base de données, vous avez changé le nom de la table « utilisateurs » à « clients » vous modifiez le fichier de configuration à ceci:

$config['tables']['users'] = 'customers'; 

maintenant clients est la table par défaut utilisé pour authentifier le login.

Mais nous voulons deux tables d'authentification, donc une autre table à des fins d'administration est créée et nommée 'admin_users'.

Tout ce que nous devons faire est de changer la valeur de $config['tables']['users'] en 'admin_users'. Ceci sera fait après le chargement de la bibliothèque ion_auth mais avant l'utilisation des méthodes ion_auth. La seule chose qui complique le changement est la façon dont la configuration de ion_auth est chargée en mémoire.

Pour éviter les collisions de noms, un index supplémentaire est ajouté à l'ensemble des éléments de configuration de ion_auth. Ainsi, en mémoire, l'élément de configuration ion_auth $config['tables']['users'] est actuellement $config['ion_auth']['tables']['users']. Vous devez adresser cet index supplémentaire lors de la définition dynamique d'un nouveau nom de table.

Voici un code qui gère l'index supplémentaire et change dynamiquement la table d'authentification en 'admin_users'.

// get array at $config['ion_auth']['tables'] 
    $ion_tables = $this->config->item('tables', 'ion_auth'); 
    // dynamically change item 'users' in that array 
    $ion_tables['users'] = "admin_users"; 

Ce code ne serait nécessaire que dans les contrôleurs qui exécutent des fonctions administratives. Rien ne doit se passer dans les contrôleurs pour les "clients", car c'est le comportement par défaut.