Предоставить анонимный доступ к определенному URL / действию в Plone

Я использую Plone 3.2.3 и установил HumaineMailman, чтобы пользователи на сайте могли подписываться и отписываться от наших различных списков рассылки. HumaineMailman работает очень просто. Существует специальный URL/ действие, которое дает вам простой текстовый список всех адресов электронной почты, которые подписаны в списке. Например:

http://www.example.org/mailman_autolist_update?list=mylist@example.org&password=secret

Предполагается, что вы просто запишете этот URL-адрес и добавите простой текстовый список в sync_members Mailman. Легко.

Проблема в том, что Plone не позволяет мне обращаться к этому URL анонимно. Когда я вошел в систему как администратор, я могу получить доступ к URL-адресу в моем браузере и просмотреть список адресов электронной почты. Но когда я не вошел в систему (и при получении этого URL с помощью wget), то Plone перенаправляет меня на страницу входа.

Как мне сообщить plone, что я хочу разрешить анонимный доступ к этому URL/ действию? Само действие (в коде) определено в Products/HumaineMailman/skins/mailman_autolist_update.py.

Заранее спасибо!

3 ответа

Решение

HumaineMailman нужны разрешения ManagePortal. Это слишком много, чтобы дать Анониму, поэтому ответ Леннарта не решил его для меня. Вместо этого я отредактировал HumaineMailman и объявил соответствующие вызовы функций общедоступными. Это небольшой риск для безопасности. Мой Plone находится за прокси-сервером Apache, поэтому я компенсировал это тем, что разрешил доступ к списку участников только с localhost (где также запущены скрипт синхронизации wget и сам mailman).

Есть несколько способов решить эту проблему без Apache или повторной настройки безопасности (что также заставило бы меня нервничать)

http://www.example.org:8080/mailman_autolist_update?list=mylist@example.org&password=secret&__ac_name=**USERNAME**&__ac_password=**PASSWORD**&pwd_empty=0&cookies_enabled=1&js_enabled=0&form.submitted=1"

Я часто использую этот трюк в сценариях, когда специальный пользователь выполняет только "услуги". Существует также HTTP-трюк для проверки подлинности HTTP, который выглядит следующим образом: http://** ИМЯ ПОЛЬЗОВАТЕЛЯ:PASSWORD@**www.example.org/mailman_autolist_update? List=mylist@example.org&password=secret, который может поддерживаться или не поддерживаться в зависимости от вашего клиента. Lib.

В качестве альтернативы, если этот код выполняется в (сценарии) Python, вы можете добавить файл метаданных (myScript.py. Metadata) и дать этому сценарию полномочия прокси-сервера Manager.ie.

[default]
title = Do something useful in the c/py that requires elevated privs
proxy = Manager

Выясните, какое разрешение защищает эту страницу, и дайте это разрешение роли Anonymous в корне Plone.

Другие вопросы по тегам