как получить пароль профиля для конкретного профиля в atg?

Я пытался получить пароль для определенного профиля, но я изо всех сил пытаюсь это сделать.

Мои друзья предположили, что мы можем получить информацию о профиле, когда мы передаем идентификатор профиля. Может ли кто-нибудь помочь мне, как это сделать?

Вот фрагмент кода того, что мы уже сделали с помощью profileId:

Repository repository = getConnection();
RepositoryView view=repository.getView("user");
RqlStatement stat=RqlStatement.parseRqlStatement("email=?0");
Object param[]={resetEmail};
RepositoryItem[] emailCheck=stat.executeQuery(view, param);
Map profile= new HashMap();
profile.put("userId",profileId);

Пожалуйста, помогите мне получить информацию о профиле, когда мы передаем идентификатор профиля.


person Mani    schedule 22.05.2014    source источник
comment
привет @rapidmpe мне нужен ответ на этот вопрос помогите мне ..   -  person Mani    schedule 22.05.2014
comment
Вы намерены отправить текущий пароль пользователя по электронной почте? Если да, то нельзя. Пароль хешируется. Или вы намерены сбросить пароль пользователя?   -  person Vihung    schedule 06.01.2015


Ответы (1)


Во-первых, в ATG пароль профиля хэшируется, чтобы любой злоумышленник не смог прочитать его в открытом виде. В зависимости от вашей версии ATG он будет хеширован с помощью MD5 или SHA-1 плюс немного соли, поэтому вы НЕ сможете увидеть пароль в открытом виде.

Во-вторых, зачем вам нужен доступ к паролю? Если у вас есть особые требования, такие как вход пользователя в систему, опубликуйте его, и я смогу помочь.

Тем не менее, если предположить, что у вас есть допустимый сценарий, в котором вам нужно получить доступ к хешированному паролю, то, как это сделать, зависит от того, нужен ли вам просто пароль пользователя, который вошел в систему, или какого-либо другого пользователя.

Для текущего пользователя, вошедшего в систему, вам просто нужно разрешить компонент /atg/userprofiling/Profile и выполнить

String password = (String) profile.getPropertyValue("password");

Очевидно, что строка «пароль» должна быть заменена константой или менеджером свойств профиля, в зависимости от методов кодирования вашего проекта.

Если вы хотите получить доступ к паролю (помните, вы не можете получить доступ к открытому текстовому паролю, только к его хешированной версии) любого другого пользователя, вам нужно сначала найти пользователя. У компонента /atg/userprofiling/ProfileItemFinder есть инструменты, которые помогут вам в этом, поэтому вам придется внедрить его в любой компонент, который вы пишете:

RepositoryItem user = profileItemFinder.findByEmail("[email protected]", "user")[0];
String password = (String) user.getPropertyValue("password");

Надеюсь это поможет.

Изменить Если у вас есть только идентификатор профиля, вы можете использовать следующий фрагмент после внедрения компонента /atg/userprofiling/ProfileTools:

Profile user = profileTools.findProfile("profile id");
String password = (String) user.getPropertyValue("password");
person Gustavo Recio    schedule 22.05.2014
comment
есть ли другой способ, например, «если мы передадим идентификатор профиля и сможем получить пароль профиля»?... - person Mani; 22.05.2014
comment
Да, в этом случае вы можете использовать компонент «ProfileTools» для поиска элемента профиля по идентификатору: profileTools.findProfile(id), а затем выполнить getPropertyValue - person Gustavo Recio; 22.05.2014
comment
я хочу выполнить сброс пароля, поэтому я попросил получить пароль и обратите внимание, что это произойдет, когда пользователь не войдет в систему ... - person Mani; 30.05.2014