2015-04-06 6 views
0

Моя цель - реализовать некоторое решение для ограничения попыток входа в систему для большого сайта django. Это ошибка шаблона, возвращаемая при попытке входа с правильными/неправильными учетными данными. Я использую модуль ограничения скорости django:Django ratelimit для простой аутентификации не возвращает обратное совпадение

http://django-ratelimit-backend.readthedocs.org/en/latest/usage.html.

enter image description here

<!-- BEGIN LOGIN FORM --> 
<form class="login-form" {% url 'ratelimitbackend.views.login' %} method="post">{% csrf_token %} 
    <h3 class="form-title">Sign in to your account!</h3> 
    <div class="alert alert-danger display-hide"> 
     <button class="close" data-close="alert"></button> 
     <span> 
      Sorry. You're username and/or password is invalid. Please try again. 
     </span> 
    </div> 
    <div class="form-group"> 
     <!--ie8, ie9 does not support html5 placeholder, so we just show field title for that--> 
     <label class="control-label visible-ie8 visible-ie9">Username</label> 
     <div class="input-icon"> 
      <i class="fa fa-user"></i> 
      <input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username"/> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="control-label visible-ie8 visible-ie9">Password</label> 
     <div class="input-icon"> 
      <i class="fa fa-lock"></i> 
      <input class="form-control placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password"/> 
     </div> 
    </div> 
    <div class="form-actions"> 
     <label class="checkbox"> 
     <input type="checkbox" name="remember" value="1"/> Remember me </label> 
     <button type="submit" class="btn propagreen pull-right"> 
     Login <i class="m-icon-swapright m-icon-white"></i> 
     </button> 
    </div> 
    <!-- <div class="login-options"> 
     <h4>Or login with</h4> 
     <ul class="social-icons"> 
      <li> 
       <a class="facebook" data-original-title="facebook" href="#"> 
       </a> 
      </li> 
      <li> 
       <a class="twitter" data-original-title="Twitter" href="#"> 
       </a> 
      </li> 
      <li> 
       <a class="googleplus" data-original-title="Goole Plus" href="#"> 
       </a> 
      </li> 
      <li> 
       <a class="linkedin" data-original-title="Linkedin" href="#"> 
       </a> 
      </li> 
     </ul> 
    </div> --> 
    <div class="forget-password"> 
     <h4>Forgot your password ?</h4> 
     <p> 
      No worries! Click 
      <a href="../../user/password/reset" id="forget-password"> 
       here 
      </a> 
      to reset your password. 
     </p> 
    </div> 
</form> 
<!-- END LOGIN FORM --> 

я включать промежуточное программное обеспечение, что уровень предела требует в settings.py

('ratelimitbackend.middleware.RateLimitMiddleware',)

меня такое urls.py сконфигурирован как такой from ratelimitbackend import admin admin.autodiscover()

+1

Вам не хватает "action" attr. Sol: '

+0

Вау, спасибо. Думаю, именно поэтому я стажер. – willredington315

ответ

0

Для тех, кого это интересует, я закончил полностью деннго-ратилим это было слишком сложно, поскольку оно не было подходящим, потому что используемая мной авторизация была очень обыденной и не очень удобной.

Решение включает в себя создание новой модели для LoginAttempts с ключом foregin для пользователя. А потом я добавил сигнал для обнаружения отказа входа в систему, , который в Django 1.5, является

user_login_failed()

Оттуда просто популярный стол LoginAttempts и установить предел в вашем setttings.py к чему-то вроде 15. После пользователь выполнил вход и сбросил попытки входа в систему. Это не самое элегантное решение, но оно работает, и не требует какой-либо дополнительной конфигурации, так это использование собственной системы аутентификации, такой как я.