2009-11-06 14 views
0

Je développe un portlet de registre personnalisé autonome, un portlet de connexion personnalisé et un portlet de profil personnalisé pour Websphere Portal 6.1. Certains utilisateurs existants n'ont pas renseigné un ou plusieurs champs obligatoires dans leurs profils.Exiger que les utilisateurs terminent le profil après une authentification réussie

La prochaine fois que ces utilisateurs se connectent avec succès, comment puis-je obtenir le portail pour les rediriger vers celui du profil personnalisé portlet avant leur donnant accès au reste du site?

+0

Je ne sais pas, mais Il semble que ce soit plus une question d'administration de Websphere qu'une question de programmation. Vous pourriez essayer de poster ceci sur ServerFault. –

+0

Merci ... Je vais essayer. – cc1001

Répondre

2

Il semble que Websphere Portal 6.1 ait une API pour envoyer des demandes d'authentification via une chaîne de filtres. J'ai trouvé un article décrivant l'API sur les travaux du développeur ('New security APIs in Websphere Portal').

En particulier, l'interface com.ibm.portal.auth.ExplicitLoginFilter vous permet de vous connecter pendant la séquence d'authentification et de modifier dynamiquement l'endroit où le système redirige après la validation des informations d'identification de l'utilisateur. Voici un exemple bouchonné:

public class CustomLoginFilter implements ExplicitLoginFilter { 
    public void login(HttpServletRequest req, HttpServletResponse resp, 
     String userId, char[] password, 
     FilterChainContext portalLoginContext, Subject subject, 
     String realm, ExplicitLoginFilterChain chain) 
     throws LoginException, WSSecurityException, 
     com.ibm.portal.auth.exceptions.LoginException { 

     //Validate the user's credentials. 
     chain.login(req, resp, userId, password, portalLoginContext, subject, realm); 

     //Redirect to profile portlet if required profile fields are incomplete. 
     if(incompleteProfile(userId)) { 
      portalLoginContext.setRedirectURL(getURLForProfilePortlet()); 
     } 
    } 

    //Other methods... 
} 

Le ExplicitLoginFilter et ses dépendances sont situés dans les fichiers jar suivants, vous devez ajouter à votre classpath lors de la compilation de votre code:

A partir de votre portail Websphere répertoire racine. ..
/base/wp.auth.base/shared/app/wp.auth.base.jar
/base/wp.base/shared/app/wp.base.jar

+0

FYI ... L'exemple de code redirige vers la page de profil, mais l'utilisateur est toujours déconnecté. Travail en cours ... – cc1001

+0

L'utilisateur était toujours déconnecté après la redirection car ma méthode getURLForProfilePortlet() renvoyait une URL commençant par l'URI du portail public (ie/wps/portal) au lieu de l'URI protégée (ie/wps/myportal). – cc1001