У пользователей, не вошедших на портал, такой сессии нет. Вы можете сделать так, чтобы портал отслеживал информацию о сеансах для анонимных пользователей, включив публичные сеансы.
http://www-10.lotus.com/ldd/portalwiki.nsf/xpDocViewer.xsp?lookupName=IBM+WebSphere+Portal+7+Product+Documentation#action=openDocument&res_title=Portal_configuration_services_wp7&content=pdcontent а>
Найдите в службе навигатора свойство, которое нужно изменить.
Кроме того, я думаю, что это может быть проще сделать в теме или в фильтре портлета. Вы по-прежнему сможете получить доступ к сеансу портала в любом из этих мест, но вам не потребуется включать код в каждый портлет.
Вот ссылка для создания глобального фильтра портлетов.
http://wpcertification.blogspot.com/2010/11/applying-global-filter-to-all-portlets.html
ОБНОВЛЕНИЕ: Как и в любом большом фреймворке, существует множество вариантов. Предложу дамп мозгов, что я могу придумать/найти. Возможно, вам придется поэкспериментировать и посмотреть, какой метод вы предпочитаете.
Файл cookie JSESSIONID должен быть одинаковым для пользователя на протяжении всего сеанса. Если сеанс истечет, они получат новый файл cookie JSESSIONID. Используя это, вы сможете отслеживать пользователя через один сеанс, но, возможно, не через несколько сеансов.
Вы можете использовать getUserPrinipal()
или getRemoteUser()
вне объекта PortletRequest. Я давно не использовал этот метод, так что вам придется посмотреть, какая информация выйдет из них.
Есть еще request.getAttribute(PortletRequest.USER_INFO)
. Вам нужно будет выполнить некоторую настройку в файле portlet.xml, чтобы сделать определенные атрибуты доступными в возвращаемой карте. Пример приведен здесь. Мы используем ibm-primaryEmail вместо имени и фамилии, как в примере с моим текущим проектом.
Наконец, вы можете изучить API PUMA, встроенный в Portal. Это будет немного тяжелее для кодирования и, очевидно, более специфично для контейнера, но должно быть в состоянии выполнять практически любую работу, которая вам нужна, связанная с пользователями.
person
Nick Roth
schedule
09.03.2013