如何获取atg中特定特定配置文件的配置文件密码?

时间:2014-05-22 06:57:51

标签: atg atg-dynamo

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

我的朋友建议我们在传递个人资料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时,请帮助我获取个人资料信息。

1 个答案:

答案 0 :(得分:1)

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

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

也就是说,假设您有一个需要访问哈希密码的有效方案,该怎么做取决于您是否只需要登录用户的密码,或者其他一些用户。

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

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

显然,“password”字符串应该替换为常量或者使用Profile属性管理器,具体取决于项目的编码实践。

如果您想要访问任何其他用户的密码(请记住,您无法访问明文密码,只能访问其密码版本),您需要先找到该用户。 / 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");