django-allauth で、ソーシャルアカウントプロバイダーを決め打ちしてログインビュー・リダイレクトビューを返す (AWS Cognitoを使う時など)

Django
2024-12-14 13:46 (7 days ago) ytyng

django-allauth を使っており、バックエンドのソーシャルアカウントを URL で指定しないログインビューを作る方法。

バックエンドに AWS Cognito 1つしか使わない場合などに有用だと思います。

ログインビュー

ログインボタンを表示する場合

from allauth.socialaccount.providers.amazon_cognito.views import oauth2_login

async def login_view(request):
    return oauth2_login(request)

ログインURLにリダイレクトするビュー

Cognito のマネージドログインURLに飛ばす場合

settings

SOCIALACCOUNT_LOGIN_ON_GET = True
from allauth.socialaccount.providers.amazon_cognito.views import oauth2_login

async def login_view(request):
    return oauth2_login(request)

もしくは

from allauth.socialaccount.providers.amazon_cognito.views import oauth2_login AmazonCognitoOAuth2Adapter

def login_redirect_view(request):
    adapter = AmazonCognitoOAuth2Adapter(request)
    provider = adapter.get_provider()
    return provider.redirect_from_request(request)

その他 allauth で設定しておいたほうがいいもの

settings

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = 'https://<your-cognito-managed-url>/logout?client_id=<cognito-client-id>>&logout_uri=https%3A%2F%2F<your-webapp>'  # NOQA
ACCOUNT_EMAIL_VERIFICATION = 'none'
SOCIALACCOUNT_ONLY = True
Currently unrated

Comments

Archive

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011