{"id":1754,"date":"2011-11-01T00:42:16","date_gmt":"2011-10-31T22:42:16","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=1754"},"modified":"2011-11-01T10:45:11","modified_gmt":"2011-11-01T08:45:11","slug":"django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2011\/11\/01\/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui\/","title":{"rendered":"Django-ratelimit-backend ne r\u00e9glera pas vos probl\u00e8mes de foie, mais de rate oui&#8230;"},"content":{"rendered":"<p>Deuxi\u00e8me \u00e9dition de la django app du mois pr\u00e9c\u00e9dent, encore une fois sur le fil, alors que les citrouilles continuent \u00e0 ricaner dans leurs coins. Ce mois-ci c&#8217;est <a href=\"https:\/\/github.com\/brutasse\/django-ratelimit-backend\" target=\"_blank\">django-ratelimit-backend<\/a>, une des multiples apps de monsieur <a href=\"https:\/\/twitter.com\/brutasse\" target=\"_blank\">Brutasse<\/a> (qui ne doit jamais dormir pour publier autant de truc&#8230;)<\/p>\n<p>1- O\u00f9 on le trouve, comment on l\u2019installe, tout \u00e7a quoi (et la doc)\u00a0?<\/p>\n<p>Deux possibilit\u00e9s pour le trouver, sur sa page <a href=\"https:\/\/github.com\/brutasse\/django-ratelimit-backend\" target=\"_blank\">github<\/a> (on regrettera le choix de github et non bitbucket mais bon:) )\u00a0 ou sur sa page <a href=\"http:\/\/pypi.python.org\/pypi\/django-ratelimit-backend\/0.1\" target=\"_blank\">pypi<\/a>. Ce qui du coup vous permettra de l&#8217;installer de deux fa\u00e7on\u00a0:<\/p>\n<ul>\n<li>un petit git clone bien de chez nous<\/li>\n<li>un simple\u00a0: pip install django-ratelimit-backend<\/li>\n<\/ul>\n<p>La doc est dispo sur la page<a href=\"http:\/\/django-ratelimit-backend.readthedocs.org\/en\/latest\/index.html\" target=\"_blank\"> readthedocs du projet<\/a>. Et elle est bien fournie. Une aide \u00e0 l&#8217;install, un quickstart et une section pour expliquer comment modifier le crit\u00e8re de limitation et une r\u00e9f\u00e9rence compl\u00e8te du code.<\/p>\n<h1>2- Mais au fait, \u00e0 quoi \u00e7a sert\u00a0?<\/h1>\n<p>A emp\u00eacher les vilains m\u00e9chants pas beau de crier &#8216;des logins ou un sort&#8217; devant vos jolis sites webs Django. En clair, \u00e0 &#8216;bannir&#8217; pendant 5 minutes des IP qui auraient tent\u00e9es de se logguer sur votre appli \u00e0 de trop nombreuses reprises.<br \/>\nLes r\u00e9glages de base sont :<\/p>\n<ul>\n<li>si tu tentes de te logguer 30 fois sans y arriver<\/li>\n<li>dans une p\u00e9riode de moins de 5 minutes<\/li>\n<li>alors tu es bannis 5 minutes.<\/li>\n<\/ul>\n<h1>3- Comment \u00e7a marche\u00a0?<\/h1>\n<p>C&#8217;est relativement facile.<br \/>\nPremi\u00e8re chose, il n&#8217;est m\u00eame pas n\u00e9cessaire d&#8217;ajouter l&#8217;app dans vos INSTALLED_APPS, \u00e0 part si vous voulez lancer les tests (vous pourrez alors installer tox si vous voulez tester avec toutes les versions de django)<\/p>\n<p>Il vous faudra par contre ajouter un backend d&#8217;authentification \u00e0 savoir\u00a0:\u00a0 &#8216;ratelimitbackend.backends.RateLimitModelBackend&#8217;.<\/p>\n<p>Il vous faudra de plus\u00a0:<\/p>\n<ul>\n<li>utiliser la vue ratelimitbackend.views.login \u00e0 la place de django.contrib.auth.views.login<\/li>\n<li>si vous utilisez l&#8217;admin, utiliser ratelimitbackend. admin au lieu de l&#8217;admin normal de django.<\/li>\n<li>Ajouter le middleware ratelimitbackend.middleware.RateLimitMiddleware<\/li>\n<\/ul>\n<p>Vous pourrez bien entendu modifier les crit\u00e8res de d\u00e9tection de vilains. Pour cela il vous suffira d&#8217;impl\u00e9menter votre propre middleware (tout est bien expliqu\u00e9 dans la doc, ne paniquez pas!)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deuxi\u00e8me \u00e9dition de la django app du mois pr\u00e9c\u00e9dent, encore une fois sur le fil, alors que les citrouilles continuent \u00e0 ricaner dans leurs coins. Ce mois-ci c&#8217;est django-ratelimit-backend, une des multiples apps de monsieur Brutasse (qui ne doit jamais dormir pour publier autant de truc&#8230;) 1- O\u00f9 on le trouve, comment on l\u2019installe, tout &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2011\/11\/01\/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Django-ratelimit-backend ne r\u00e9glera pas vos probl\u00e8mes de foie, mais de rate oui&#8230;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[35],"tags":[99,98,24],"class_list":["post-1754","post","type-post","status-publish","format-standard","hentry","category-la-django-app-du-mois","tag-django","tag-python","tag-review"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-si","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1754","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=1754"}],"version-history":[{"count":5,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1754\/revisions"}],"predecessor-version":[{"id":1756,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1754\/revisions\/1756"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=1754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=1754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=1754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}