質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.58%

Django-allauth(rest-auth)のpasswordリセットメール内のURL指定が正しく反映されない

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 114

tomaa

score 58

前提・実現したいこと

Django-allauthと、Django-rest-authを利用して、ios,androidアプリ、WEBアプリ共通のログインまわりの機能を開発しています。

ユーザー登録済みのアカウントの、パスワードをリセットするためにaccounts_api/password/reset/のエンドポイントに、メールアドレスを入力してアクセスすると、入力したアドレス宛にメールを受信します。

メールの内容は下記のようになっております。

このメールは example.com で、あなたのアカウントのパスワードリセットが要求されたため、送信されました。

次のページで新しいパスワードを選んでください:

http://example.com/accounts_api/password/reset/confirm/(%3FPMzE%5B0-9A-Za-z_%5C-%5D+)/(%3FP5kt-19a402a967c1faa1d3b3%5B0-9A-Za-z%5D%7B1,13%7D-%5B0-9A-Za-z%5D%7B1,20%7D)/$

あなたのユーザー名 (念のため): my name

ご利用ありがとうございました!

 example.com チーム


通常であれば、example.comが自分の環境に対応される(ローカルでの開発であれば127.0.0.1:8000、本番環境であれば登録しているドメイン)と思うのですが、現在どちらの環境で試してもexample.comとなってしまいます

対象のファイルのパスは以下のとおりです。
allauth/templates/account/messages/password_reset_key_message.txt

ファイル内コードは以下のとおりです。

{% load i18n %}{% autoescape off %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}!

You're receiving this e-mail because you or someone else has requested a password for your user account.
It can be safely ignored if you did not request a password reset. Click the link below to reset your password.{% endblocktrans %}

{{ password_reset_url }}

{% if username %}{% blocktrans %}In case you forgot, your username is {{ username }}.{% endblocktrans %}

{% endif %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you for using {{ site_name }}!
{{ site_domain }}{% endblocktrans %}
{% endautoescape %}


そのため、これ以降のパスワードリセット作業ができない状況です。

example.comの部分を自分の環境に対応した状態で表示するには、どのような方法をとれば良いでしょうか?

該当のソースコード

settings.py

INSTALLED_APPS = [
#.....
 'allauth',
 'allauth.account',
 'allauth.socialaccount',
 'rest_framework.authtoken',
 'rest_auth',
 'rest_auth.registration',
 'rest_framework',
#.....
]

project/urls.py

from django.contrib import admin
from django.contrib.staticfiles.urls import static
from django.urls import path, include
from django.views.generic import TemplateView
from . import settings_common, settings_dev

urlpatterns = [
    path('api-auth/', include('rest_framework.urls')),
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')),
    path('accounts_api/', include('rest_auth.urls')),
    path('accounts_api/registration/', include('rest_auth.registration.urls')),

path('accounts_api/registration/account-confirm-email/(?P<key>[-:\w]+)/$', TemplateView.as_view(),
     name="account_confirm_email"),

path('accounts_api/registration/account-confirm-email/', include('allauth.urls')),
path('accounts_api/registration/account-confirm-email/signup/', include('allauth.urls')),


#以下django-rest-auth公式ドキュメントを参考に対応
        path(
            'accounts_api/password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
            TemplateView.as_view.as_view(),
            name="password_reset_confirm"),
    ]


コメントアウトの部分は公式ドキュメントを参考に追加しています。

試したこと

API経由ではなく、WEBサイト経由の場合は、example.comに自分の環境が反映され、手続きを正常に行うことができます。
(*WEBサイトはメール内のメッセージをオーバーライドして利用しています。)

補足情報(FW/ツールのバージョンなど)

開発環境

python: 3.7.5

Django:2.2.2

django-allauth:0.41.0

django-rest-auth:0.9.5

djangorestframework:3.12.1

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る