Предоставить анонимный доступ к определенному URL / действию в Plone - PullRequest
0 голосов
/ 24 августа 2009

Я использую Plone 3.2.3 и установил HumaineMailman , чтобы пользователи на сайте могли подписываться и отписываться от наших различных списков рассылки. Humaine Mailman работает очень просто. Существует специальный 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 ]

2 голосов
/ 12 сентября 2009

Есть несколько способов решить эту проблему без использования 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 Auth, который выглядит как http://**USERNAME:PASSWORD@**www.example.org/mailman_autolist_update?list=mylist@example.org&password=secret, который может поддерживаться или не поддерживаться в зависимости от вашей клиентской библиотеки.

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

[default]
title = Do something useful in the c/py that requires elevated privs
proxy = Manager
1 голос
/ 24 августа 2009

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

0 голосов
/ 24 августа 2009

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

...