2016-09-11 12 views
1

私はdjangoプロジェクトがあり、私はREST APIにdjango restフレームワークを使用し、認証にはJWTを使用します。ユーザー名とパスワードの代わりに電子メールとパスワードでユーザーを認証するようにJWTを構成することが可能かどうか疑問に思っていました。私はJWTの重要な部分を拡張して上書きすることができます(JWTを最初から書いているかのようになります)が、構成可能な方法があるかどうか疑問に思っていました。django restフレームワークjwt認証に電子メールとパスワード

ありがとうございました。

答えて

1

はい、可能です。 USERNAME_FIELDを電子メール(USERNAME_FIELD = 'email')とモデルとして設定するだけです。

これは、例えば次のようになります。

from __future__ import unicode_literals 

from django.db import models 
from django.contrib.auth.models import PermissionsMixin 
from django.contrib.auth.base_user import AbstractBaseUser 
from django.utils.translation import ugettext_lazy as _ 

from .managers import UserManager 


class User(AbstractBaseUser, PermissionsMixin): 
    created = models.DateTimeField(_('created'), auto_now_add=True) 
    email = models.EmailField(_('email'), unique=True, blank=False) 
    name = models.CharField(_('name'), max_length=30, blank=False) 
    last_name = models.CharField(_('last name'), max_length=100, blank=False) 
    is_active = models.BooleanField(_('active'), default=True) 


    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = ['name', 'last_name'] 

    class Meta: 
     ordering = ('created',) 
     verbose_name = _('user') 
     verbose_name_plural = _('users') 

    def get_full_name(self): 
     """ 
     Returns the first_name plus the last_name, with a space in between. 
     """ 
     full_name = '%s %s' % (self.first_name, self.last_name) 
     return full_name.strip() 

    def get_short_name(self): 
     """ 
     Returns the short name for the user. 
     """ 
     return self.name 

し、それは

を動作するはずです
関連する問題