Ошибка программирования аутентификации Django linkedin - PullRequest
0 голосов
/ 22 февраля 2019

Когда я пытаюсь пройти проверку подлинности с помощью linkedin в моем приложении django, он проходит первый этап, когда запрашивает разрешение на доступ к моим данным для linkedin, но после этого не проходит проверку подлинности и отображает эту ошибку.

Django Debug page

Я искал в сети и ничего не видел в WSGIRequest.Это мой профиль аутентификации Linkedin в моем файле настроек

SOCIAL_AUTH_LINKEDIN_OAUTH2_KEY = '7756p783kegdt2'
SOCIAL_AUTH_LINKEDIN_OAUTH2_SECRET = 'irDH1gCxSJKICfhi'
SOCIAL_AUTH_LINKEDIN_OAUTH2_SCOPE = ['r_basicprofile', 'r_emailaddress']
SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS = [
'email-address', 'headline', 'industry']
SOCIAL_AUTH_LINKEDIN_OAUTH2_EXTRA_DATA = [
('id', 'id'),
('first-name', 'first_name'),
('last-name', 'last_name'),
('email-address', 'email_address'),
('industry', 'industry'),
]

SOCIAL_AUTH_PIPELINE = (
'social_core.pipeline.social_auth.social_details',
'social_core.pipeline.social_auth.social_uid',
'social_core.pipeline.social_auth.auth_allowed',
'social_core.pipeline.social_auth.social_user',
'social_core.pipeline.user.get_username',
'social_core.pipeline.social_auth.associate_by_email',
'social_core.pipeline.user.create_user',
'social_core.pipeline.social_auth.associate_user',
'social_core.pipeline.social_auth.load_extra_data',
'social_core.pipeline.user.user_details',
)

Это мой логин, который вызывается в моем файле настроек

LOGIN_URL = '/#authenticate'
LOGOUT_URL = '/user/logout'
LOGIN_REDIRECT_URL = '/accounts/'
LOGOUT_REDIRECT_URL = '/'

Это мой взгляд на обработку аутентификации пользователя

class CaseInsensitiveModelBackend(ModelBackend):
""" Allows Case insensitive Authentication for Username/emails """

    def authenticate(self, username=None, password=None, **kwargs):
    """ confirm validity of username and password"""

    try:
        user = User.objects.get(username__iexact=username)
        if user.check_password(password):
            return user
    except User.DoesNotExist:
        return None

    def get_user(self, user_id):
    try:
        return User.objects.get(pk=user_id)
    except User.DoesNotExist:
        return None

Это мои важные URL

path(r'accounts/register', views.register, name='register'),
path(
    r'accounts/account-activation-sent/', views.account_activation_sent,
    name='account_activation_sent'
),
path(
    r'accounts/activate/<uidb64>/<token>/', views.activate,
    name='activate'
),
path(r'purchase/<token>/', views.purchase, name='purchase'),
path(r'<str:username>/deactivate/', views.deactivate, name='deactivate'),
path(r'deactivated/', views.deactivated, name='deactivated'),
path(r'accounts/login/', views.user_login, name='login'),

Это URL, на который я хочу перенаправить пользователя после аутентификации с помощью linkedin

path(r'<str:username>/', views.dashboard, name='dashboard'),

1 Ответ

0 голосов
/ 22 февраля 2019

Первый аргумент authenticate - это запрос, а не имя пользователя - см. документы .Вам нужно сохранить эту подпись.

class CaseInsensitiveModelBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
...