Liferay 7 - мне нужно сделать URL-адрес олицетворения пользователя динамическим

Я использую проект ловушки Custom Landing Page (https://github.com/opensourceforlife/CustomLandingPage-Hook), чтобы направлять пользователей на частный сайт организации, с которой они связаны. Хук отлично работает, когда фактический пользователь входит в систему.

Но у меня есть требование разрешить администраторам выдавать себя за пользователей, что также отлично работает, но может быть настроено только для открытия одной конкретной страницы.

Что мне нужно, так это изменение URL-адреса на основе логики пользовательского хука целевой страницы (логика, которую я могу легко реализовать). В результате администратор окажется на правильной странице для пользователя, которого он выдает за себя.

Я изучил это, и URL-адрес генерируется тегом ‹liferay-security:doAsURL>, который реализован в com.liferay.taglib.security.DoAsURLTag.java.

Я уверен, что смогу написать код для создания правильного URL-адреса, однако не знаю, как перезаписать существующий код. Я делал перехватчики JSP раньше, но я никогда не перезаписывал класс taglib (ни какой-либо класс в комплекте OSGI — только JSP). Я должен верить, что это возможно, но мне еще предстоит найти какое-либо руководство для этого (да, я смотрел...).


person Scott McIntosh    schedule 09.08.2019    source источник


Ответы (1)


Вместо изменения реализации тега я бы рекомендовал заменить URL-адрес на созданный пользователем (сгенерировать правильный URL-адрес с самого начала) и изменить JSP, в котором используется найденный вами тег.

Насколько я знаю, это единственное место, где вы можете выдать себя за пользователя, поэтому усилия должны быть относительно низкими. Как положительный побочный эффект: изменение реализации тега не приведет к автоматической перекомпиляции JSP, так что вы все равно можете получить устаревший код (в зависимости от характера реализации тега, на который я не смотрел).

Замена URL-адреса пользовательской реализацией также должна быть намного проще и понятнее, чем операция на открытом сердце в taglib.

person Olaf Kock    schedule 13.08.2019
comment
Я думаю ты прав. Казалось более элегантным заменить тег, чтобы изменение отражалось везде, где он используется, но, похоже, он больше нигде не используется (по крайней мере, я не нашел его нигде). Вот что я собираюсь сделать. - person Scott McIntosh; 14.08.2019