OAuth2:使用电子邮件而非用户名进行身份验证

Mic*_*ael 5 django oauth-2.0 django-rest-framework

我正在使用OAuth2和django-oauth-toolkit django-rest-framework.

我通常通过以下方式验证我的用户,以获取令牌:

curl -X POST -d "grant_type=password&username=new_user&password=new_user" -u "GZwzDjPM89BceT8a6ypKGMbXnE4jWSzsyqbM3dlK:" http://localhost:8000/o/token/
Run Code Online (Sandbox Code Playgroud)

有没有办法使用电子邮件而不是用户名来验证我的用户?

谢谢!

iFa*_*art 5

是的!可以通过username在用户模型中设置电子邮件来实现。

class User(AbstractBaseUser, PermissionsMixin):
 email =  models.EmailField(
    verbose_name='email address',
    max_length=255,
    unique=True,
 )
 first_name = models.CharField(max_length=30)
 last_name = models.CharField(max_length=30)

 USERNAME_FIELD = 'email'
Run Code Online (Sandbox Code Playgroud)

然后电子邮件现在可以username在请求中使用。

curl -X POST -d "grant_type=password&username=test@test.com&password=new_user" -u "GZwzDjPM89BceT8a6ypKGMbXnE4jWSzsyqbM3dlK:" http://localhost:8000/o/token/
Run Code Online (Sandbox Code Playgroud)