奥德克金字塔
pyramid_odesk的Python项目详细描述
pyramid_odesk允许您的用户通过odesk进行授权 在你的pyramid项目中。
您可以在pypi上找到它作为pyramid_odesk。也不要忘记检查documentation。
要求
pyramid-redis-sessions用于将会话存储在Redis数据库中,因此需要安装 Redis并将其配置为侦听端口127.0.0.1。
其他软件包将自动安装:
pyramid pyramid_redis_sessions python-odesk
要激活jinja2渲染器,请安装:
pip install pyramid_jinja2
安装
使用pip安装:
pip install pyramid_odesk
或者使用easy_install:
easy_install pyramid_odesk
您需要创建类型为Web的oDesk API keys,并为生成的api密钥设置适当的权限。
用法
您可以查看pyramid_odesk_example应用程序或使用 下面的说明。
在*.ini文件中包括以下设置:
[app:main] ... # Redis session settings redis.sessions.secret = FILL ME # oDesk settings odesk.api.key = FILL ME odesk.api.secret = FILL ME
然后在项目的__init__.py中定义以下函数:
def get_acl_group(user_uid, request): """Here goes your ACL logic.""" # All authenticated users have ``view`` permission return 'view'
此函数应返回acl组principals的列表,如果用户 不允许有任何访问组。有关security和tutorial的信息,请参见棱锥体文档。
在models.py:
中定义rootfactoryclass RootFactory(object): """This object sets the security for our application.""" __acl__ = [ (Allow, Authenticated, 'view'), (Deny, Authenticated, 'login'), (Allow, Everyone, 'login'), ] def __init__(self, request): pass
现在在配置注册表中注册get_acl_group()函数,使授权生效。输入您的主要方法:
def get_acl_group(request): return ('view',) def main(global_config, **settings): """Main app configuration binding.""" config = Configurator(settings=settings, root_factory="myapp.models.RootFactory") # ACL authorization callback for pyramid-odesk config.registry.get_acl_group = get_acl_group # External includes config.include('pyramid_odesk') # Views and routing goes here # ... # config.add_view('myapp.views.MainPage', renderer='templates/main.jinja2', permission='view') return config.make_wsgi_app()
通过重写__init__.py中的资产,您可以提供自定义forbidden.jinja2模板:
# Override forbidden template config.override_asset( to_override='pyramid_odesk:templates/forbidden.jinja2', override_with='myapp:templates/forbidden.jinja2')
请参阅pyramid_odesk/templates/forbidden.jinja2中的模板示例。
“注销”操作也是通过CSRF保护的POST请求完成的, 参见pyramid_odesk_example/templates/layout.jinja2中的“注销”对接示例。
联系人
这个项目是由西里尔·潘申(cyril panshine)制作的。非常欢迎错误报告和拉取请求!
1.1.5
- 由于odesk公共api的更改,我们现在需要从 client.hr.get_user_me()
1.1.4
- 在会话中断和 未设置请求令牌和密钥。
1.1.3
- 将名字和姓氏存储在会话中,以便在模板中进一步使用
1.1.2
- 登录和注销操作通过POST执行,并具有保护 抵御CSRF攻击
1.1.1
- 在调度期间修复BaseHandler遮挡AttributeError。
1.1
- 使用override_offset覆盖forbidden.jinja2模板。
- 如果用户已通过身份验证,但未针对某些视图进行身份验证, 使用注销链接而不是重定向呈现forbidden页 避免重定向循环
1.0
- 初始版本。