2015-11-23 8 views
1

Я столкнулся с этой проблемой раньше и решил ее, но это просто появилось случайно (или так кажется). Я только что вернулся в свой проект Django после некоторого времени от него ... при входе в систему я забыл свое имя пользователя в Интернете и дал мне соответствующее сообщение об ошибке Sorry, that's not a valid username or password. Поэтому, чтобы решить эту проблему, я создал нового суперпользователя (так как я также забыл имя пользователя admin), поэтому я мог проверить, что такое мое имя пользователя в Интернете. Я сделал это успешно, но теперь, когда я пытаюсь войти в систему, я получаю ошибку CSRF (правильно ли имя пользователя или пароль). Я понятия не имею, как это произошло, так как оно правильно проверялось 10 секунд назад, и я не менял ни одной строки кода.Недостаток CSRF отсутствует или недействителен Django

{% extends "base.html" %} 

{% block content %} 

    <title>{% block title %} | Login{% endblock %}</title> 

    <h2>Login</h2> 

    {% if form.errors %} 
     <p class="error">Sorry, thats not a valid username or password</p> 
    {% endif %} 

    <form action="/accounts/auth/" method="POST">{% csrf_token %} 
     <label for="username">Username: </label> 
     <br> 
     <input type="text" name="username" value="" id="username"> 
     <br><br> 
     <label for="password">Password: </label> 
     <br> 
     <input type="password" name="password" value="" id="password"> 
     <br><br> 
     <input type="submit" value="Login"> 
    </form> 

{% endblock content %} 
+0

Хорошо ... после попытки 3 или 4 раза это работает сейчас ... Я ничего не менял ... странная ошибка, которую я когда-либо видел ... – 123

+0

не очень хорошая практика, но если у вас есть проблемы с CSRF TOKEN, используйте декоратор @csrf_exempt в вашем представлении. ** Повторяю, это не очень хорошая практика. ** – Joseleg

ответ

3

В целях безопасности, маркер CSRF изменяется («повернута»), когда вы войти. Если открыть страницу в Tab A, а затем войти на Tab B, а затем попытаться представить форму в табл A, вы получите ошибку CSRF, потому что токен CSRF в Tab A устарел.

Когда вы обновляете Tab A, загружается новый токен CSRF, и ошибки останавливаются.

Смежные вопросы