0

我试图获取特定配置文件的密码,但我很难做到这一点。

我的朋友建议我们在传递个人资料ID时可以获取个人资料信息。任何人都可以帮助我如何做到这一点?

这是到目前为止我们使用 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);

当我们传递个人资料 ID 时,请帮助我获取个人资料信息。

4

1 回答 1

1

首先,在 ATG 中,配置文件的密码经过哈希处理,以防止任何恶意攻击者以明文形式读取它。根据您的 ATG 版本,它将在 MD5 或 SHA-1 中加上一些盐进行散列,因此您将无法看到明文密码。

二、为什么需要访问密码?如果您有特定要求,例如登录用户,请将其发布,我将能够提供帮助。

也就是说,假设您有一个需要访问散列密码的有效场景,如何做到这一点取决于您是否只需要登录用户的密码或其他用户的密码。

对于当前登录的用户,只需要解析 /atg/userprofiling/Profile 组件,然后执行

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

显然,“密码”字符串应替换为常量或配置文件 propertyManager,具体取决于您项目的编码实践。

如果您想访问任何其他用户的密码(请记住,您无法访问明文密码,只能访问其哈希版本),您需要先找到该用户。/atg/userprofiling/ProfileItemFinder 组件有工具可以帮助您解决这些问题,因此您必须将其注入到您正在编写的任何组件中:

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

希望这可以帮助。

编辑 如果您只有配置文件 ID,则可以在注入 /atg/userprofiling/ProfileTools 组件后使用以下代码段:

Profile user = profileTools.findProfile("profile id");
String password = (String) user.getPropertyValue("password");
于 2014-05-22T08:27:18.033 回答