решение проблемы неавторизованным / rest-auth / регистрация / в Django Allauth - PullRequest
0 голосов
/ 05 июня 2019

Привет, ребята. Наконец-то я могу попросить о помощи, так как считаю, что моя проблема сдерживает меня уже третий день, когда я гуглю. Я использую реагировать в интерфейсе и Django в поддержке и пытаюсь зарегистрировать пользователя, логин работает как шарм! но когда я пытаюсь создать нового пользователя, я получаю сообщение об ошибке

Unauthorized: /rest-auth/registration/
[05/Jun/2019 10:34:45] "POST /rest-auth/registration/ HTTP/1.1" 401 27

Я уверен, что это путь для регистрации пользователя, потому что когда я захожу по ссылке в браузере, она работает нормально. проблема в том, что я отправляю данные из набора реагирующего интерфейса, подобного этому

export const authSignUP = (username, email, password1, password2) => {
    return dispatch => {
        dispatch(authStart);
        axios.post('http://127.0.0.1:8000/rest-auth/registration/', {
            username: username,
            email: email,
            password1: password1,
            password2: password2
        }).then(res => {
            const token = res.data.key;
            const expirationDate = new Date(new Date().getTime() + 3600 * 1000);
            localStorage.setItem('token', token);
            localStorage.setItem('expirationDate', expirationDate);
            dispatch(authSuccess(token));
            dispatch(checkAuthTimeOut(3600));
        })
        .catch(err => {
            alert(err)
            // dispatch(authFail(err))
        })
    }
}

и мой файл настроек django выглядит так

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


#This is required otherwise it asks for email server
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'


REST_AUTH_SERIALIZERS = {
    'TOKEN_SERIALIZER': 'jobs_home.serializer.TokenSerializer',
}


ROOT_URLCONF = 'jobs_dj.urls'

TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
      os.path.join(BASE_DIR, '../build')
    ],
    'APP_DIRS': True,
    'OPTIONS': {
      'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
      ],
    },
  },
]

ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_EMAIL_REQUIRED = True   
ACCOUNT_USERNAME_REQUIRED = False

#Following is added to enable registration with email instead of username
AUTHENTICATION_BACKENDS = (
 # Needed to login by username in Django admin, regardless of `allauth`
 "django.contrib.auth.backends.ModelBackend",

 # `allauth` specific authentication methods, such as login by e-mail
 "allauth.account.auth_backends.AuthenticationBackend",
)

REST_USE_JWT = True

WSGI_APPLICATION = 'jobs_dj.wsgi.application'

AUTH_PASSWORD_VALIDATORS = [
  {
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
  },
  {
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
  },
  {
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
  },
  {
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
  },
]

CORS_ORIGIN_ALLW_ALL = True

CORS_ORIGIN_WHITELIST = (
    'http://localhost:3000', 'http://127.0.0.1:8000',  'http://127.0.0.1:3000'
)

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

Я действительно буду использовать чью-то помощь в разрушении этой стены .. спасибо

1 Ответ

0 голосов
/ 10 июня 2019

Я думаю, что установка класса аутентификации в моих настройках REST_FRAMEWORK в файле settigs.py была проблемой, я изменил настройки на

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
    ),
}

, и это, наконец, сработало.это пришло ко мне, когда даже при перечислении объектов базы данных требовалась аутентификация даже после установки разрешений для разрешения любых.Я знал, что по умолчанию это аутентификация пользователей, даже если мне это не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...