WSGI/Django: пасуйте назад имя пользователя к Apache для журнала доступа

Мое приложение Django, развернутое в mod_wsgi под Apache с помощью стандартного WSGIHandler Django, аутентифицирует пользователей через вход в систему формы на стороне Django. Таким образом к Apache, пользователь является анонимным. Это заставляет доступ Apache зарегистрироваться менее полезный.

Существует ли способ пасовать назад имя пользователя через обертку WSGI к Apache после обрабатывания запроса, так, чтобы это появилось в журнале доступа Apache?

(Версии: Django 1.1.1, mod_wsgi 2.5, Apache 2.2.9)

9
задан Gunnlaugur Briem 11 February 2010 в 12:03
поделиться

3 ответа

Вы можете сделать это только при использовании встроенного режима и только при использовании отдельного пакета под названием apswigpy, который обеспечивает привязку Python для исходного объекта запроса Apache. Пакет mod_wsgi предоставляет дополнительный механизм, позволяющий передавать исходный объект запроса Apache в качестве ссылки Python CObject в среде WSGI. Вы используете это в сочетании с apswigpy, например:

from apache.httpd import request_rec
r = request_rec(environ['apache.request_rec'])
r.user = user

По крайней мере, я думаю, что это установит соответствующую информацию, которую затем может использовать журнал доступа.

Вам действительно стоит перенести это обсуждение в список рассылки mod_wsgi.

4
ответ дан 4 December 2019 в 21:49
поделиться

Вероятно, это не то, что вы ожидаете, но вы можете использовать имя пользователя в своей схеме URL. Таким образом, пользователь будет в разделе пути ваших журналов apache.

Вам нужно будет изменить вашу аутентификацию так, чтобы ответы, требующие аутентификации, были очевидны в журналах apache, в противном случае при просмотре журналов вы можете приписать неаутентифицированные запросы аутентифицированным пользователям. Например. вернуть временное перенаправление на страницу входа, если запрос не аутентифицирован.

1
ответ дан 4 December 2019 в 21:49
поделиться

Вы можете использовать mod_auth_tkt . auth_tkt - это подписанный файл cookie с идентификатором пользователя, понятным Apache. Ваше веб-приложение должно установить cookie , когда пользователь входит в систему и выходит из нее. Apache может получить REMOTE_USER из файла cookie, передать его вашему веб-приложению или веб-приложению, отличному от Django, работающему на том же сервере, включить его в журналы и т.д.

3
ответ дан 4 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: