Требовать от пользователей заполнения профиля после успешной аутентификации
-
18-09-2019 - |
Вопрос
Я разрабатываю отдельный пользовательский реестр, пользовательский портлет входа в систему и пользовательский портлет профиля для Websphere Portal 6.1.Некоторые существующие пользователи не заполнили одно или несколько обязательных полей в своих профилях.
В следующий раз, когда эти пользователи успешно войдут в систему, как я могу заставить портал перенаправить их на портлет пользовательского профиля до того , как предоставить им доступ к остальной части сайта?
Решение
Похоже, что Websphere Portal 6.1 поставляется с API для отправки запросов на проверку подлинности через цепочку фильтров.Я нашел статью, описывающую API в developer works ('Новые API-интерфейсы безопасности в Websphere Portal').
В частности, com.ibm.portal.auth.Интерфейс ExplicitLoginFilter позволяет подключаться во время последовательности аутентификации и динамически изменять направление перенаправления системы после проверки учетных данных пользователя.Вот сокращенный пример:
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...
}
ExplicitLoginFilter и его зависимости расположены в следующих файлах jar, которые вы должны добавить в свой classpath при компиляции вашего кода:
Начиная с корневого каталога вашего Websphere Portal...
/base/wp.auth.base/shared/app/wp.auth.base.jar
/base/wp.base/shared/app/wp.base.jar