2017-09-25 17 views
0

djangoドキュメントhttps://docs.djangoproject.com/en/dev/topics/auth/customizing/は素晴らしいですが、私は混乱しています。今すぐメンターがいることは素晴らしいことです。カスタムユーザー認証djangoでの接続

は、私は、カスタム・ユーザー・モデルと認証システム

the user model will have 
-name 
-password 
-email 
-JWT (javascript web token) 

権限と会場(エンターテイメントの場所)関連テーブルを経由して、多くの関係に多くを経由して、このユーザモデルに接続されますを作成したいです。

問題がありますが、ドキュメントであっても、承認のための現在のアウトオブボックス実装をどのように上書きするのか混乱しています。

さらに私は、トークン認証のためにhttps://github.com/GetBlimp/django-rest-framework-jwt

を使用したいのですが、私はそれをフックする方法は考えています。私は散歩を探していると思う。

答えて

0

他とあなたの要求を進めることができます

from django.core import validators 
from django.utils.translation import ugettext_lazy as _ 
from django.contrib.auth.models import AbstractBaseUser 
from django.contrib.auth.models import PermissionsMixin 
from django.contrib.auth.models import UserManager 

class User(AbstractBaseUser, PermissionsMixin): 

    username = models.CharField(_('username'), max_length=75, unique=True, 
     help_text=_('Required. 30 characters or fewer. Letters, numbers and ' 
        'underscores characters'), 
     validators=[ 
      validators.RegexValidator(re.compile('^[\w]+$'), 
      _('Enter a valid username.'), 'invalid') 
     ]) 
    first_name = models.CharField(_('first name'), max_length=254, blank=True) 
    last_name = models.CharField(_('last name'), max_length=30, blank=True) 
    email = models.EmailField(_('email address'), max_length = 254, unique = True, null = True) 
    is_staff = models.BooleanField(_('staff status'), default=False, 
     help_text=_('Designates whether the user can log into this admin ' 
        'site.')) 
    is_active = models.BooleanField(_('active'), default=True, 
     help_text=_('Designates whether this user should be treated as ' 
        'active. Unselect this instead of deleting accounts.')) 
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now) 

    objects = UserManager() 

    USERNAME_FIELD = 'username' 
    REQUIRED_FIELDS = ['first_name'] 

    def get_full_name(self): 
     return self.name 

    def get_short_name(self): 
     return self.username 

これにより、ユーザーモデルを完全にカスタマイズすることができます。適切なフィールドを削除することができます。その後、djangorestframework-jwtの設定手順に従ってください。

0

まず、Djangoは内蔵されており、ユーザー、あなたは現在のDjangoのUserモデルに他のフィールドを追加する必要がある場合は、それを使用することができ利便性のために:

form django.contrib.auth.models import User 

class MyUser(User): 
    # define your additional custom fields 

djangorestframework-JWTをインストールした後、この設定を行いますあなたのsettings.pyにu​​rls.pyで

REST_FRAMEWORK = { 
    ... 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
    ), 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     ... 
     'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 
     ... 
    ), 
} 

JWT_AUTH = { 
    # JWT related settings, see the docs 
} 

はこれを追加します。

urlpatterns = [ 
    .... 
    url(r'^api-token-auth/', obtain_jwt_token), 
    ... 
] 

まず、トークンを取得してから他のAPIを参照してください:

ポストリクエストをhttp://127.0.0.1:8000/api-token-auth/に送り、ユーザー名とパスワードを入力してトークンを取得してください。他の要求に 、あなたはこのトークンを送信する必要があります:あなたはからフィールドを削除したい場合は

GET http://127.0.0.1:8000/yoururl 
HEADER 
Authorization JWT <YourToken> 

あなたはカール、httpie、郵便配達(クロームアプリ)やHttpClientを

+0

ありがとうございます。さて、多くのことをたくさん考えています。私はちょうどそれを作成することを想像するdjangos ORMを使用して(私は多くの実装に多くのfamilarです)会場とアクセス許可モデルの...私はdjangos contenttypesを使用することができますが、私はむしろ@Serjik –

関連する問題