2014-10-20 3 views
1

Я пытаюсь создать сайт, на котором требуется аутентификация, т. Е. Отображается только страница входа в систему, если пользователь не вошел в систему. Вопрос заключается в том, как достичь этого с минимальными затратами. Я могу украсить каждый видОбязательная аутентификация в Pyramid

permission='authenticated' 

где «authenticated» - это имя моего разрешения; но, возможно, есть более простой способ, когда по умолчанию все представления требуют аутентификации.

Примечание Я принял ответ ниже, но я верю, что в нем больше. Config бит:

config = Configurator(settings=settings, 
         default_permission='standard_view', 
         root_factory='RootFactory') 

безопасности - разрешение бит:

class RootFactory(object): 
    __acl__ = [(Allow, Authenticated, 'standard_view'), 
       (Allow, 'g:admin', 'admin_view'), 
    ] 
+0

Ваш вопрос не ответили? – Raj

+0

Есть ответ - большое спасибо! - но я не мог заставить его работать. Вся аутентификация/авторизация в Pyramid, по-видимому, чрезмерно спроектирована :( – Juliusz

+1

Если вы разместите свою функцию __init__.py и функцию просмотра, вы, вероятно, сможете получить более подробные рекомендации. Не знаете, что вы имеете в виду под избыточным дизайном, это позволяет вам установите глобальное значение по умолчанию в дополнение к мелкомасштабному элементу управления для каждого вида. – Raj

ответ

2

Существует способ сделать это, установив default_permission в объекте Configurator. Например, в вашем __init__.py вы можете иметь что-то подобное:

from pyramid.config import Configurator 

def main(global_config, **settings): 
    config = Configurator(settings=settings, default_permission='authenticated') 
    config.include('pyramid_chameleon') 
    config.scan() 
    return config.make_wsgi_app() 

Вы можете найти более подробную информацию на этих трех звеньев: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/config.html http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/security.html#setting-a-default-permission http://docs.pylonsproject.org/docs/pyramid/en/latest/api/config.html#pyramid.config.Configurator.set_default_permission

+0

Согласно моему окончательному коду - вам также необходимо определить RootFactory, где определено разрешение. – Juliusz

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