Я реализовал веб-скрипт репозитория Alfresco (на Java) для программного создания нового сайта.
Я заметил, что есть интерфейс SiteService
, который, я думал, мог бы быть использован для этого -
SiteInfo site = siteService.createSite("site-dashboard", "mySite",
"mySite", "", SiteVisibility.PUBLIC);
Однако это приводит к созданию нефункционального сайта, и хотя он виден на панели управления Alfresco Share, я не могу его использовать.
Затем я наткнулся на этот пример кода, который делает именно то, что я хочу. НО код содержит раздел для аутентификации, включающий отправку логина и пароля пользователя в веб-службу dologin
. Не очень хочу это делать.
Но поскольку пользователь уже вошел в систему через Alfresco Share, они должны быть уже аутентифицированы.
Если я вызываю webscript create-site из моего кода, как показано в примере (без первоначального вызова dologin
), я получаю код возврата 401 (неавторизованный).
Итак, мой вопрос, как мне сообщить сценарию create-site о моей аутентификации?
Я читал об использовании билета аутентификации здесь . Сохраняется ли этот билет в сеансе, и если да, то как мне получить к нему доступ в моем коде Java? Если бы я мог получить билет, этого было бы достаточно, чтобы вызвать веб-скрипт create-site.
Обновление : я добавил параметр alf_ticket в соответствии с комментарием, но я все еще получаю ответ 401.
Мой текущий код:
public NodeRef createServiceChange(String serviceChangeName) {
HttpClient client = new HttpClient();
String ticket = authService.getCurrentTicket();
PostMethod createSitePost = new PostMethod("http://localhost:8081/share/service/modules/create-site");
JSONObject siteObject = new JSONObject();
try {
siteObject.put("shortName", serviceChangeName);
siteObject.put("visiblity", "Public");
siteObject.put("sitePreset", "site-dashboard");
siteObject.put("title", serviceChangeName);
siteObject.put("description", serviceChangeName);
siteObject.put("alf_ticket", ticket);
createSitePost.setRequestHeader("Content-Type", "application/json");
createSitePost.setRequestHeader("Accept", "application/json");
createSitePost.setRequestEntity(new StringRequestEntity(siteObject.toString(), "application/json", "UTF-8"));
int status = client.executeMethod(createSitePost);
System.out.println("create a site script status :: " + status);
if (status == HttpStatus.SC_OK) {
System.out.println("Site created OK");
}
else{
System.out.println("There is error in site creation");
}
} catch (JSONException err) {
err.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}