パスワードのないユーザーを手動でログインさせる
2023-10-27 08:25:30
質問
手動 (サーバーサイドから) ログインを実装するための最良の方法について教えてください。 なしで を使用することなく、手動でログインするための最良の方法を見つける手助けをしていただければと思います。ワークフローを説明させてください。
- ユーザーが登録する
- ありがとうございます。アクティベーションリンクを含むメールが送信されました blablabla
- (アカウントは存在しますが、有効ではありませんと表示されます。)
- ユーザーがメールを開き、リンクをクリックする
- (アカウントが有効)
- ありがとうございました。これで、サイトを利用することができます
私がやろうとしていることは、ユーザーが電子メールのリンクをクリックした後にログインして、すぐにウェブサイトを使い始められるようにすることです。
彼のパスワードはDBで暗号化されているので使用できません。
どのように解決するのですか?
ユーザーをログインさせるのにパスワードは必要ありません。その
auth.login
機能
は、単に
User
オブジェクトを受け取ります。これはおそらく、アカウントを有効にしたときにすでにデータベースから取得しているものでしょう。ですから、それをそのまま
login
.
もちろん、あなたは とても もちろん、ユーザーが既に有効になっているアカウントへのリンクを偽装して、そのユーザーとして自動的にログインすることができないように注意する必要があります。
from django.contrib.auth import login
def activate_account(request, hash):
account = get_account_from_hash(hash)
if not account.is_active:
account.activate()
account.save()
user = account.user
login(request, user)
... など
Edited :
うーん、気づかなかったけど
authenticate
を使用する必要があることに気づきませんでした。コードを見てみると、やっていることはすべて
backend
属性が認証用バックエンドのモジュールパスと等価になっているだけです。だから、あなたはそれを偽造することができます - 上記のログイン呼び出しの前に、これを行います。
user.backend = 'django.contrib.auth.backends.ModelBackend'
関連
-
ImproperlyConfiguredです。INSTALLED_APPS の設定を要求されたが、設定されていない
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み] Djangoのテンプレートからsettings.pyの定数にアクセスすることは可能ですか?
-
[解決済み] FastCGIとDjangoを使用しているnginxのエラーログはどこで見ることができますか?
-
[解決済み] Django REST Framework: ModelSerializerに追加フィールドを追加する
-
[解決済み] DjangoとReactJSを連携させる方法とは?
-
[解決済み] シグナルハンドラは django プロジェクトのどこにあるべきですか?
-
[解決済み] ブラウザでパスワードの保存を促すにはどうしたらいいですか?
-
[解決済み] Django の日付テンプレートのデフォルトフォーマットを変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ImproperlyConfiguredです。DEFAULT_INDEX_TABLESPACE の設定を要求されましたが、設定されていません。
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み] Djangoアプリの命名規則はありますか?
-
[解決済み] django のクラスベースのビューで permission_required デコレータを使用する方法
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] Djangoのクッキー、どうすれば設定できますか?
-
[解決済み] djangoでurls.pyから直接名前付きurlパターンにリダイレクトする?
-
[解決済み] django テンプレートで "ブロック" を繰り返す方法
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?
-
[解決済み] Django はフォームが初期化された後にフィールドの値を設定します。