要添加到api star的contrib包。

apistar-contrib的Python项目详细描述


API星形控制器

https://img.shields.io/pypi/v/apistar-contrib.svghttps://img.shields.io/travis/ryananguiano/apistar-contrib.svgDocumentation StatusUpdates

要添加到api star的contrib包。

功能

  • CSRF令牌挂钩
  • 本地会话存储(用于开发)
  • 时区支持
  • redis会话存储

待办事项

  • 数据库会话存储

使用量

本地会话存储(用于开发)

fromapistarimportApp,Route,httpfromapistar_contrib.sessionsimportSession,SessionComponent,SessionHook,LocalMemorySessionStoredefuse_session(session:Session,params:http.QueryParams):forkey,valueinparams:session[key]=valuereturnsession.datadefclear_session(session:Session):session.clear()returnsession.dataroutes=[Route('/','GET',use_session),Route('/clear','GET',clear_session),]app=App(routes=routes,components=[SessionComponent(LocalMemorySessionStore)],event_hooks=[SessionHook])

redis会话存储
fromapistarimportApp,Route,httpfromapistar_contrib.sessionsimportSession,SessionComponent,SessionHook,RedisSessionStoredefuse_session(session:Session,params:http.QueryParams):forkey,valueinparams:session[key]=valuereturnsession.datadefclear_session(session:Session):session.clear()returnsession.dataroutes=[Route('/','GET',use_session),Route('/clear','GET',clear_session),]app=App(routes=routes,components=[SessionComponent(RedisSessionStore,'redis://localhost:6379/0')],event_hooks=[SessionHook])

CSRF令牌

importosfromapistarimportApp,Route,httpfromapistar_contrib.csrfimportEnforceCsrfHook,rotate_tokendefshow_form():returnapp.render_template('form.html',show_csrf=True,)defshow_no_csrf_form():returnapp.render_template('form.html',show_csrf=False,)defhandle_form(request:http.Request):# You should rotate CSRF tokens after successful login/logoutrotate_token(request)returnapp.render_template('form.html',show_csrf=True,success=True,)routes=[Route('/','GET',show_form),Route('/no_csrf','GET',show_no_csrf_form),Route('/handle','POST',handle_form),]BASE_DIR=os.path.dirname(__file__)TEMPLATE_DIR=os.path.join(BASE_DIR,'templates')app=App(routes=routes,event_hooks=[EnforceCsrfHook],template_dir=TEMPLATE_DIR,)
<!-- templates/form.html --><!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>CSRF Form</title></head><body><ul><li><ahref="{{ reverse_url('show_form') }}">Form with CSRF</a></li><li><ahref="{{ reverse_url('show_no_csrf_form') }}">Form without CSRF</a></li></ul>
    {% if success %}<h1>Successful POST</h1>{% endif %}
    <formaction="{{ reverse_url('handle_form') }}"method="post">
        {% if show_csrf %} {{ csrf_token() }} {% endif %}
        <buttontype="submit">Submit form {% if show_csrf %}with{% else %}without{% endif %} CSRF</button></form></body></html>

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。

历史记录

0.0.6(2018-06-08)

  • 将redis会话存储添加到自述文件和测试中

0.0.5(2018-05-19)

  • 添加了redis会话存储
  • 创建了第一个测试

0.0.4(2018-05-18)

  • 删除默认组件

0.0.3(2018-05-18)

  • 重构会话组件

0.0.2(2018-05-17)

  • 添加CSRF令牌挂钩

0.0.1(2018-05-15)

  • pypi上的第一个版本。

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

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本