\ お問い合わせはこちら! /

Google認証後に管理画面にログインできない【django-allauth】

  • Google認証で作ったユーザーで管理ページにログインしたい!

このような方に向けて書きました。

Google認証でユーザー作成すると、次の理由でDjangoの管理サイトにログインできません。

  • パスワードが未設定
  • 権限がない

本記事では、Google認証で作成したユーザーで管理サイトにログインする方法をご紹介します。

Google認証後に管理画面にログインできない

冒頭でもお伝えした通り、原因は次の2つです。

  • パスワードがない
  • 権限がない

それぞれの対策方法をお伝えします。

パスワードを作成する

流れとしてはDjangoのシェルに入り、パスワードを設定します。

まずはコマンドラインから次のコマンドを実行して、Djangoのシェルに入りましょう。

python manage.py shell

この後のコマンドは一行ずつ入力して実行する、の繰り返しで行きます。

from django.contrib.auth import get_user_model
User = get_user_model()

# emailでユーザーを取得する場合
email = 'user@example.com'  # ここに対象のメールアドレスを入力
user = User.objects.get(email=email)

# usernameでユーザーを取得する場合
username = 'username'  # ここに対象のユーザー名を入力
user = User.objects.get(username=username)

# パスワードを設定
new_password = 'your_new_password'  # ここに新しいパスワードを入力
user.set_password(new_password)
user.save()

最後のuser.save()を実行した時点でパスワードが保存されます。

終わったら以下のコマンドでDjangoシェルから抜けましょう。

exit()

これで指定したユーザーにパスワードが設定されました。

管理画面にログインするための権限を設定する

Djangoの管理サイトにアクセスできない主な原因として次が考えられます。

  • スーパーユーザーが正しく作成されていない
  • スーパーユーザーのパスワードが設定されていない

以下の手順でスーパーユーザーを作成または修正してください。

パスワードの作成と同様、Djangoシェルに入ります。

python manage.py shell

続いて、以下のコマンドを順番に実行していってください。

from django.contrib.auth import get_user_model
User = get_user_model()

email = 'admin@example.com'  # スーパーユーザーのメールアドレスに置き換えてください
admin_user = User.objects.get(email=email)

# 権限を付与
admin_user.is_staff = True
admin_user.is_superuser = True
admin_user.save()

最後に、次のコマンドでDjangoシェルから抜けましょう。

exit()

以上で設定したように、is_staffとis_superuserがTrueでないと管理サイトにアクセスできません。

正しく権限設定を行うことでログインできるようになるので、設定を確認してみてください。

それでも解決できなかったらこれをやろう

ブラウザのキャッシュをクリア

ブラウザのキャッシュやクッキーが問題を引き起こしている可能性があります。

以下のキーを押してスーパーリロードしましょう。

Command + Shift + R

または、別のブラウザやシークレットモードでログインをしてみてください。

デバッグ情報の確認

本番モードにしていたら、デバッグモードにするのも一つの方法です。

DEBUG = True

エラーログが問題解決の手がかりになる場合があります。

Djangoログの確認

Djangoのログに詳細なエラーメッセージが記録されていないか確認します。

特に、認証に失敗した理由が記録されている可能性があります。

まとめ

django-allauthのGoogle認証で作ったユーザーは、次の理由から管理サイトにログインができません。

  • パスワードがない
  • 権限がない

本記事ではユーザーにこれらの設定を加えるため、Djangoシェルでユーザー設定を進めていく方法を紹介しました。

普段はあまりDjangoシェルを使うことがないかとは思いますが、ぜひこの機会に使い方を覚えてみてください。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

karo@プログラマのアバター karo@プログラマ プログラマ

「書くことで人の役にたつ」をモットーに活動中。
本職はプログラマで、Pythonが得意。
基本情報技術者試験合格。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)