2013-02-22 3 views
0

Я обслуживаю аутентифицированное изображение с помощью django. Изображение находится за представлением, которое требует входа в систему, и в конце я должен проверить больше вещей, чем просто проверку подлинности. Из-за причин, которые сложно объяснить здесь, я не могу использовать реальный url для изображения, но я обслуживаю его с помощью настраиваемого url, ведущего к аутентифицированному представлению.Откройте аутентифицированное изображение, отправленное django из java, используя клиент Apache http

Из java изображение должно быть доступно, чтобы сохранить или отобразить. Для этой части я использую Apache httpclient.

В Apacahe я пробовал много вещей (каждый пример и сочетание примеров ...), но, похоже, не может заставить его работать. Для других частей webapp я использую django-rest-framwork, с которым я успешно подключаюсь из java (и c и curl).

Я использую оформление login_reuired в django, что делает попытку сначала перенаправить URL-адрес на страницу входа в систему.

Пробовав ссылку и логин в webviewer, я вижу код 200 (OK) в консоли сервера. Стараясь связь с HTTPClient, я получаю 302 Найдено в консоли .... (отрываясь 302, это означает, что редирект ..)

это то, что я делаю в Джанго:

в URLs .py:

url(r'^photolink/(?P<filename>.*)$', 'myapp.views.photolink',name='photolink'), 

в views.py:

import mimetypes 
import os 

@login_required 
def photolink(request, filename): 
    # from the filename I get the image object, for this question not interesting 
    # there is a good reason for this complicated way to reach a photo, but not the point here 
    filename_photo = some_image_object.url 
    base_filename=os.path.basename(filename_photo) 
    # than this is the real path and filename to the photo: 
    path_filename=os.path.join(settings.MEDIA_ROOT,'photos',mac,base_filename) 
    mime = mimetypes.guess_type(filename_photot)[0] 
    logger.debug("mimetype response = %s" % mime) 
    image_data = open(path_filename, 'rb').read() 
    return HttpResponse(image_data, mimetype=mime) 

, кстати, если я получить эту работу я нужен еще один декоратор, чтобы пройти другие тесты .... , но я сначала нужно, чтобы эта вещь работала ....

на данный момент это не защищенный url .... plain http.

в Java я пробовал много вещей ... с помощью веб-сервера Apache HttpClient 4.2.1 прокси, куки, аутентификации переговоры с последующей переадресации ... и так далее ...

ли я с видом на некоторые основные вещь здесь? ... кажется, что логин клиента веб-сайта не подходит для автоматического входа в систему ...

поэтому проблема может быть в моем коде в django .... или в java-коде ... .

ответ

0

В конце концов проблема заключалась в использовании HTTP-авторизации. Это не по умолчанию используется в декораторе login_required.

добавления пользовательского декоратора, который проверяет для авторизации HTTP сделал трюк:

увидеть этот пример: http://djangosnippets.org/snippets/243/

 Смежные вопросы

  • Нет связанных вопросов^_^