奥德克金字塔

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

您需要创建类型为WeboDesk 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的列表,如果用户 不允许有任何访问组。有关securitytutorial的信息,请参见棱锥体文档。

models.py

中定义rootfactory
class 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

  • 初始版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我如何在我的安卓应用程序中集成一个当我点击注销按钮时应该打开的反馈表单?   java在循环遍历SQL表时退出   java hibernate with jpa不会停止   java在从方法返回值时,是否有一种很好的方法“null”成员变量?   java这段代码的运行时复杂性是多少?说明中给出了代码   java如何访问struts if标记的test属性中的属性   TomTom Android SDK中的java返回位置为null   Java equals方法的良好设计   java在拖动ListView边缘时如何检测?   java如何从游标中检索字符串数组   SQLiteJava和sqlite4java   音频连接来自Java的两个WAV文件?   使用java的用户的ip地址   java@XmlRegistry它是如何工作的?   java如何防止每个url访问wicket页面   java getBytes()在Windows(Java9)下正常工作,在Linux下也不工作   intellij idea Java不能将lambda用于自制接口lambda转换的目标类型必须是接口