我正在使用Alfresco 4.2并试图找到一些用户的收藏夹,但我正在使用的webscript仅返回当前用户的结果。我确信,我正在调查的用户存在。
我该怎么办?我做错了什么?
这是有效的webscript调用:
domain.com/alfresco/api/-default-/public/alfresco/versions/1/people/-me-/favorites
这是不起作用的那个:
domain.com/alfresco/api/-default-/public/alfresco/versions/1/people/user@tenant.com/favorites
并返回以下内容:
{"error":{"statusCode":404,"briefSummary":"04203980 The entity with id: user@tenant.com was not found","stackTrace":"[org.alfresco.rest.api.impl.PeopleImpl.validatePerson(PeopleImpl.java:155)
BTW,/favorite-sites
代替/favorites
适用于所有人。
答案 0 :(得分:2)
404是误导性的。尝试将URL与不存在的用户一起使用。这也将返回404,但错误会有所不同。访问现有用户
The entity with id: existinguser was not found
而不存在的用户提供
The entity with id: personId is null. was not found
如果您尝试获取其他用户的收藏,则HTTP响应状态应为403。
您无法访问其他用户收藏夹,因为类org.alfresco.rest.api.impl.PeopleImpl
会检查主叫用户是否与请求收藏的用户相同。在Alfresco 5.0d中,relvant代码是:
public String validatePerson(String personId, boolean validateIsCurrentUser)
{
if(personId.equalsIgnoreCase(DEFAULT_USER))
{
personId = AuthenticationUtil.getFullyAuthenticatedUser();
}
personId = personService.getUserIdentifier(personId);
if(personId == null)
{
// "User " + personId + " does not exist"
throw new EntityNotFoundException("personId is null.");
}
if(validateIsCurrentUser)
{
String currentUserId = AuthenticationUtil.getFullyAuthenticatedUser();
if(!currentUserId.equalsIgnoreCase(personId))
{
throw new EntityNotFoundException(personId);
}
}
return personId;
}