Я написал код, который отображает список вложений. Проблема в том, что я хочу, чтобы пользователь мог просматривать вложение без входа в систему. Есть ли способ аутентификации для пользователя? Вот мой код:
//to get cases. this returns a list of attachments, with the url in Jira
$attachments = $jira_case->issues[0]->fields->attachment;
//iterates over the lists and creates links
foreach ($attachments as $i=> $attachment) {
$html .="
<tr>
<td style='padding-left: 10px; width:0px; padding-top: 20px;' colspan='3'>
". ($i+1) .") <a target = '_blank' href ='". $attachment->content ."'>". nl2br($attachment->filename) ."</a>
</td>
</tr>";
}
Проблема в том, что когда пользователь нажимает на ссылку, если они не вошли в систему, им будет предложено войти в систему. Я не хочу этого, так как это мое приложение для аутентификации, так что пользователю не нужна учетная запись jira, Это возможно? Может быть, пропустив какой-то токен?
Ясон
Если кто-то еще задается вопросом, как это сделать:
$url = "https://mySite.atlassian.net/secure/attachment/". $attachment_id ."/". $attachment_name ."?os_username=". $this->jira_user_name ."&os_password=" . $this->jira_password;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$file = curl_exec($ch);
curl_close($ch);
if($file){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$attachment_name);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
echo ($file);
exit;
}else{
throw new Exception("Error: file now found.");
}
С точки зрения JIRA запрос, который поступает из пользовательского браузера, не содержит заголовка проверки подлинности. JIRA использует тот же набор разрешений для вложений, что и для проблем, поэтому всякий раз, когда пользователь может просматривать конкретную проблему JIRA, он также может видеть (и загружать) вложения. Поэтому, если вы не сделали свой проект {s} и issue {s} доступным для анонимного пользователя, кто-то с соответствующими разрешениями должен пройти аутентификацию. Если вы хотите, чтобы пользователи могли загружать вложения только через ваше приложение, как пользователь вашего приложения, вам необходимо прокси-сервер каким-то образом через ваше приложение. Вместо того, чтобы показывать ссылки на страницы, указывающие непосредственно на JIRA, вам нужно создать ссылки, указывающие на ваш сервер, тогда ваш сервер должен связаться с JIRA для вложения и пройти аутентификацию себя как пользователя вашего приложения (с разрешениями на просмотр проблемы, содержащей вложения), и передать ответ от JIRA на конечного пользователя.