自定义身份验证功能不接受第三个参数

时间:2017-11-29 01:16:54

标签: django authentication

尝试使用以下内容编写自己的自定义身份验证后端:

https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#writing-an-authentication-backend

我想用以下元素实现authenticate函数:

  1. 用户名
  2. 密码
  3. VERIFICATION_CODE
  4. 我将函数定义如下:

    def authenticate(self, username=None, password = None, verification_code = None):
        ... 
    

    但是我只获得usernamepassword的值,而不是verification_code

    登录表单如下所示:

    <form id="login-form" method="POST">
        {% csrf_token %}
    ... 
        <input id="user_name" type="text" class="form-control" name="username" placeholder="Email Address" required="" autofocus="" />
        <input id="password"  type="password" class="form-control" name="password" placeholder="Password" required=""/>   
        <input id="verification_code" type="text" class="form-control" name="verification_code" placeholder="Verification Code" required=""/>  
        <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button>   
    
    </form>
    

    任何帮助都会非常感激:)

1 个答案:

答案 0 :(得分:0)

从Django 1.11开始,您还必须包含request参数:

https://docs.djangoproject.com/en/2.0/topics/auth/customizing/#writing-an-authentication-backend

  

在Django 1.11中更改:request参数已添加到authenticate(),并且在Django 2.1中将删除对不接受它的后端的支持。