Comment est-ce que j'utilise autologin dans liferay?
Je veux connecter mon automatiquement des utilisateurs de notre application. Je sais liferay a une auto login, mais je ne sais pas comment l'utiliser. Je n'ai pas trouvé beaucoup d'informations importantes sur le web.
Que dois-je faire pour l'autologin?
Je veux connecter un utilisateur automatiquement lorsqu'il clique sur un lien, sans avoir à entrer le nom et le mot de passe. Le nom et le mot de passe est enregistré dans notre base de données d'application.
source d'informationauteur Luke
Vous devez vous connecter pour publier un commentaire.
Je crois que l'OP n'a pas utiliser pour une réponse maintenant. Néanmoins, cela mérite une réponse globale. En fait, je suis surpris qu'il ne l'est pas encore.
Tout d'abord, c'est une mauvaise idée: un tel arrangement comme celui proposé par l'OP est vraiment trop précaire. Néanmoins, une solution pour le problème décrit peut être un bon modèle pour quelqu'un de la création d'un autologin pour Liferay.
Maintenant, disons que vous souhaitez vous connecter automatiquement à tout utilisateur dont le nom à l'écran est envoyé dans un paramètre de chaîne de requête. Par exemple, si un accès
http://localhost:8080/web/guest/home?insecurely_login_user=juju
puis la Liferay dans lejuju
utilisateur doit être connecté. Comment faire? Suivez les étapes ci-dessous:Créer l'autologin classe
Tout d'abord, créer un plugin hook. Dans son
docroot/WEB-INF/src
répertoire, crée une classe implémentant l'com.liferay.portal.security.auth.AutoLogin
interface. Dans mon exemple, je vais l'appelerbr.brandizzi.adam.liferay.insecure.InsecureAutoLogin
.La
AutoLogin
interface a une seule méthode, appeléelogin()
qui attend deux paramètres (unHttpServletRequest
et unHttpServletResponse
cas) et retourne un tableau de chaînes de caractères. Donc, ma classe ressemblera à ceci sans mise en œuvre:La
AutoLogin.login()
méthode va essayer de récupérer les informations nécessaires à l'authentification à partir de nombreuses sources, principalement l'objet de la requête. Si elle décide que l'utilisateur doit être connecté, il retourne un tableau avec les données pertinentes pour l'authentification; si elle décide de pas journal de l'utilisateur, il peut juste retournull
.Dans notre cas, nous essayons d'obtenir le nom de l'utilisateur à partir de la
insecurely_login_user
paramètre de la requête. Si il ya un tel paramètre, nous allons procéder à la connexion, si ce n'est pas de paramètre, il retourne justenull
:Nous avons donc le nom de l'écran. Que faire maintenant? Laissez-nous trouver un utilisateur de la base de données avec le même nom d'écran.
Si un utilisateur qui, tel un écran de nom, il sera récupéré et attribué à la
user
variable. Dans ce cas, l'authentification doit être réussie et l'autologin classe doit retourner un tableau de trois cordes - la informations d'identification. Ces valeurs sont celles à être retournés comme des informations d'identification, dans l'ordre où ils doivent apparaître dans le tableau:Voici donc la ligne:
Si un utilisateur n'est pas trouvé, cependant, une exception sera levée. Donc, nous devons nous entourer le code ci-dessus avec un
try
/catch
de la construction. Si une exception est lancée, il suffit de retournernull
:En fin de compte, c'est mon
InsecureAutoLogin
classe:De l'inscription de l'autologin classe
Maintenant notre crochet devrait enregistrer cette classe comme un autologin processeur. C'est vraiment facile.
Tout d'abord, modifiez le fichier
docroot/WEB-INF/liferay-hook.xml
l'ajout d'unportal-properties
élément avec la valeurportal.properties
:Maintenant, créez un fichier nommé
portal.properties
àdocroot/WEB-INF/src
. Il doit contenir une propriété nomméeauto.login.hooks
dont la valeur doit être le nom de notre classe:Et c'est tout. Le déploiement de ce crochet et votre autologin fonctionne.
Conclusion
Comme je l'ai dit, vous ne devrait pas utiliser un dangereux "authentification" de la méthode. Il est trop facile de le contourner, de faire encore des autorisations d'administration! Toutefois, si vous suivez ces étapes, vous avez un squelette de créer une meilleure fonction "autologin". Aussi, je sais que certaines personnes vraiment voulez faire quelque chose comme ce insécurité "authentification" de la méthode et parfois, nous devons suspendre nos jugements et à seulement aident à tirer sur les pieds...
Le code source de ce projet peuvent être trouvés ici et vous pouvez télécharger la GUERRE ici.
Étape 1: Créer une classe CustomLoginFilter et met en œuvre à partir de AutoLogin interface.Remplacer méthode de connexion. Le Code comme suit.
Étape 2: Écriture de code ci-dessous dans portal-ext.propriétés
Étape 3: Créer une classe CustomLoginAuthenticator et met en œuvre à partir de l'Authentificateur.
Étape 4: Si l'authentification échoue, alors vous pouvez aussi rediriger n'importe quelle page en code suivant
Que voulez-vous dire exactement par "autologin"? Si vous voulez Liferay pour vérifier si l'utilisateur est déjà authentifié par certains entité externe (comme un simple serveur de connexion SAE), vous pouvez l'activer que dans le le portail.propriétés. Là, c'est déjà préconfiguré pour la liferay mécanismes d'authentification pris en charge. Sinon, vous pourriez avoir besoin pour mettre en œuvre votre propre autologin crochet (comme indiqué dans ce post par exemple
Bien trouvé.
Étape 1: Cliquez sur ajouter une iframe et laissez la configuration de l'affichage de pop-up.
Étape 2: indiquer l'url et si il y a des variables comme l' (www.mysite.com/Action=Login&de l'Utilisateur . . . .), ajouter l'Action=Login dans des variables cachées champ de texte.
Étape 3: Cliquez sur authentifier et sélectionnez le formulaire d'authentification. En cela, faire usre que l'utilisateur champ nom et un mot de passe nom de champ sont administrés correctement, et les valeurs sont '@screen_name@','@mot de passe@'.
Par exemple, supposons que l'url est quelque chose comme http://www.mysite.com/Action=Login?User=aj&Mot de passe=aj.
Nom d'utilisateur (champ)=Utilisateur
Mot de passe (champ)=Mot de passe
Nom d'utilisateur (Valeur)=aj
Mot de passe (Valeur)=aj
Les variables cachées(champ)=Action=Login
Maintenant, chaque fois qu'un utilisateur se connecte à la liferay application, si son compte existe dans le site indiqué(dans l'url), il se connecte à ce site automatiquement(agit comme un single sign on).
C'est le travail !!!
-Aj