タイトルには、ユーザー名だけでなくユーザーの電子メールも使用できるようにする方法があるかどうかを知りたいログインします。現時点では、ユーザーにさまざまな慣習を使用させているので、ログイン手順を標準化したいと思っています。Django:ユーザーのログインユーザー名を変更しても電子メールを使用するようにする
2
A
答えて
2
一意のメールアドレスを適用する場合は、おそらくこれを行うことができます。つまり、ユーザーは同じ電子メールアドレスを持つことはできません。 。
def login(request):
username = request.POST['username']
password = request.POST['password']
user = User.objects.filter(email = username)[0]
if(user is not None):
# -- the user was retrieved by an email address
# -- now you can authenticate and log them in log them in
from django.contrib import auth
user = auth.authenticate(user.username, password)
if(user is not None):
auth.login(user, request)
:viewメソッドは次のようになります
<form method="post" action="{% url myproject.views.login %}">
<p>Username</p>
<input type='text' name='username'/>
<p>Password</p>
<input type='password' name='password'/>
<input type="submit" value="Login"/>
</form>
:あなたは電子メールアドレスでユーザーを取得し、それらをログに記録可能性があり、このよう
フォームは次のようになります。
OpenIDで行くための別の方法かもしれない:http://bit.ly/aOaAbw
: http://bit.ly/a2OlHXは、ユーザーごとに一意の電子メールアドレスを確認してください
0
私は自分の問題を解決したと思いますが、少なくとも今は機能的です。 自分の認証バックエンドを使用することに決めました。私はファイル 'auth_backends.py'を作成し、それを私のsettings.pyのAUTHENTICATION_BACKENDSに追加しました:
私のログインフォームフィールドには、「ユーザー名」とパスワードのみが含まれています。入力されたユーザー名が実際にユーザー名か電子メールかどうかを確認するための唯一の方法は、.find( '@')を実行することです。 これを確認するより良い方法はありますか?これで十分でしょうか? 私がこれをやっている理由は、ユーザーが自分のユーザー名(実際には数字で構成される「ID」)よりも自分のメールアドレスを覚えやすいからです。
私はまた、重複した電子メールの世話をする必要があります。
from django.conf import settings
from django.contrib.auth.backends import ModelBackend
from django.core.exceptions import ImproperlyConfigured
from django.db.models import get_model
from django.contrib.auth.models import User
class CustomUserModelBackend(ModelBackend):
def authenticate(self, **credentials):
if 'username' in credentials:
if credentials['username'].find('@') > 0:
return self.authenticate_by_email(**credentials)
else:
return self.authenticate_by_username(**credentials)
def authenticate_by_username(self, username=None, password=None):
try:
user = User.objects.get(username=username)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
def authenticate_by_email(self, username=None, password=None):
try:
user = User.objects.get(email=username)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
関連する問題
- 1. ユーザーのアレイを更新する(同じユーザー名と電子メールを使用)
- 2. ユーザーの電子メールによるアクセスを制限するDjango Saleor
- 3. Laravel 5.2.x電子メールとしてユーザー名を使用するパスワードブローカー列名
- 4. Microsoftグラフエクスプローラ - ユーザーを作成してユーザー名と電子メールを更新する
- 5. メールはユーザーに属します - ユーザー名として電子メールを使用するCakephp 2.0.5
- 6. Microsoft.Identity.Clientを使用してユーザー名と電子メールを取得する
- 7. firebase authでメールを変更するには?私が使用してユーザーの電子メールアドレスを更新/変更しようとしています
- 8. ユーザー名か電子メールIDを使用してログインする方法
- 9. ASP.NET SQLMembershipProvider - ユーザー名として電子メール
- 10. cronを使用して電子メールでユーザーにメールを送信する
- 11. セイルズjs、電子メールまたはユーザー名を使用してユーザーを検索
- 12. 電子メールにユーザー名を表示
- 13. 電子メールの件名を変更する
- 14. 電子メールの件名を変更する
- 15. php error_log電子メールの件名を変更する
- 16. Outlook Webアドインを使用して電子メールの感度を変更する
- 17. Django-ユーザー名の代わりに電子メールで組み込みのログインビューを使用するには?
- 18. Django - 電子メールに送信者名を追加するには?
- 19. CDO - 電子メールを送信しても電子メールを送信すると
- 20. Django電子メールのみを使用してユーザーを作成し、非アクティブとして設定する
- 21. Djangoのパスワードリセットを使用して電子メールが無効であることをユーザーに通知します
- 22. Accounts.createUserユーザー名、パスワード、電子メールなし
- 23. 電子メールでユーザーをアクティブにする
- 24. 電子メールクライアントを使用して電子メールを送信するにはどうすればよいですか?
- 25. 完全にユーザー名を電子メールに置き換えてください。Django
- 26. Zimbra:電子メールで電子メールを送信するように修正する
- 27. djangoの電子メールのユーザ名とパスワード
- 28. プライベートドメインの電子メールアドレスを使用してDjangoで電子メールを送信するには?
- 29. htmlとjavascriptを使用してユーザーのユーザー名、パスワード、電子メールを保持するフォームを作成するにはどうすればよいですか?
- 30. ユーザー名と電子メールをファイアベースに保存する方法
これは機能する場合があります。また、自分の認証バックエンドを作成し、それをミドルウェアとして含めることも知っていました。 – chiurox
見つけたソリューションのリンクがあります。この質問に答えると、私は電子メールでサインインを実装することも検討しています。 – JeremyFromEarth