【问题标题】:how to get profile password for the particular particular profile in atg?如何获取 atg 中特定配置文件的配置文件密码?
【发布时间】:2014-05-22 06:57:50
【问题描述】:

我试图获取特定个人资料的密码,但我很难做到。

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

这是到目前为止我们使用 profileId 所做的代码 sn-p:

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 时,请帮我获取个人资料信息。

【问题讨论】:

  • 嗨@rapidmpe我需要一些关于这个问题的答案帮助我..
  • 您是否打算通过电子邮件将用户的当前密码发送给他们?如果是这样,你不能。密码经过哈希处理。还是您打算重置用户密码?

标签: atg atg-dynamo


【解决方案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 组件后使用以下 sn-p:

Profile user = profileTools.findProfile("profile id");
String password = (String) user.getPropertyValue("password");

【讨论】:

  • 有没有其他方法,比如“如果我们传递个人资料 ID 并可以获得个人资料密码”?...
  • 是的,在这种情况下,您可以使用“ProfileTools”组件通过 id:profileTools.findProfile(id) 查找配置文件项,然后执行 getPropertyValue
  • 我想重置我的密码功能,这就是为什么我要求获取密码并注意这些将在用户未登录时发生......
猜你喜欢
  • 1970-01-01
  • 2015-12-23
  • 2019-04-07
  • 2019-11-14
  • 2021-11-13
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多