問題タブ [flask-login]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
812 参照

flask - フラスコ wtforms_alchemy オブジェクトには属性がありません

フラスコ安静APIの実行を開始し、にPOSTリクエストを送信してユーザーを登録しようとしましたlocalhost:5000/api/v1/users。必須フィールドは電子メールとパスワードです。ユーザーを作成するためのcurlリクエストは次のとおりですcurl http://localhost:5000/api/v1/users -d "email=admin@example.com&password=password" -X POST -v

しかし、それは私にこのエラーを返します:AttributeError: 'UserCreateForm' object has no attribute 'password'

以下は私のコードの一部です

ビュー.py

フォーム.py

models.py ( to を 2 番目に配置するのに疲れましたがUserMixin、それでも同じエラーが発生します)

また、login_manager.user_loader含めたので、フラスコログインでは問題ないと思います。

wtform_alchemy のドキュメントはありますか? モデルから自動的にフォームを作成する方法がまったくわかりません。

0 投票する
3 に答える
18107 参照

python - フラスコアプリでの @login_required トラブル

認証を処理するブループリントを作成しました。このブルー プリントでは、Flask-Login を使用しています。また、次のコードと、表示されていないコードがあります。

設計図には次のものがあります。

次に、認証を追加したい小さなアプリがあります。

小さなアプリ

これで、青写真の @login_required が機能していることがわかります。ブラウザーを開いて localhost:8000/ にアクセスすると、サインインする必要があるからです。

ただし、localhost:8000/profile に移動すると、login_required デコレーターはトリガーされません。現在のユーザーがいないため、エラーが発生します。

@login_required がブループリントでは機能するのに、アプリでは機能しないのはなぜですか? 同じ名前空間を維持することが確実な場合でも?

0 投票する
1 に答える
140 参照

python - ウェブサイトのユーザーが API フラスコにアクセスできるようにする

2 つの Web アプリケーションがあります。1つはウェブサイトです。もう 1 つは API です。どちらもフラスコを使用して構築されています。それらは異なる認証方法を使用します。

この Web サイトでは、flask-login ライブラリを使用しています。具体的には、フォームによって提供されたlogin_user場合に使用されます。user.check_password

API は、暗号署名されたトークンを使用します。この API は、モバイル アプリケーション (ios など) で使用されます。/api/loginこれらのアプリケーションは、Web サイトで期待されるのと同じユーザー名とパスワードを呼び出してPOST します。その後、API は、アプリが保存して将来の認証に使用するトークンを返します。トークンは危険なライブラリを使用して生成されます。具体的には、 を使用して作成されTimedJSONWebSignatureSerializerます。

現在、Web サイトのページの 1 つが API にアクセスする必要があるという混乱した問題が発生しています。もちろん、ユーザーは適切に生成された認証トークンを持っていないため、API はアクセスを許可しません。コードのすべての部分を制御できますが、この場合の最も洗練されたソリューションが何であるかはわかりません。いずれかの認証メカニズムの使用を停止する必要がありますか? Web サイト ユーザーの API 認証トークンを何らかの方法で保存する必要がありますか?

アドバイスをいただければ幸いです。

更新 この問題について考えていると、login_user が使用するトークン生成プロセスを変更できることがわかりました。login_user が API と同じトークンを使用した場合、おそらく、ユーザーが Web サイト経由で API リクエストを行う必要があるときはいつでも、セッションからトークンを取得できます。これが正気かどうかはまだはっきりしていません。

0 投票する
1 に答える
2967 参照

api - REST API で、複数のユーザーの認証を処理する

REST Api を実装するための要件の 1 つは、クライアントが特定の要求を処理するために必要な状態情報を毎回サーバーに送信する必要があることです。認証が適切に行われており、残りの API を使用するユーザーの認証に成功していると仮定します。つまり、すべてのリクエストで、ユーザーが API にアクセスする権利を持っていることを確認しています。

複数のユーザーがいて、各ユーザーが異なるアクセス権を持っている場合はどうなりますか? そのため、各ユーザーは異なる Web サービスのセットのみを呼び出すことができます。これが通常サーバーによってどのように処理されるのか疑問に思っています。これを行う唯一の方法は、要求されたサービスへのアクセス権があることを確認するために、要求ごとに各ユーザーの認証を (パスワードハッシュコードなどを介して) チェックすることだと思います。それが正しい場合、そのようなシナリオで複数のユーザーの認証を処理するための推奨される方法は何ですか?

私は自分のAPIを開発するためにフラスコを使用しているので、具体的な提案があれば大歓迎です:)

前もって感謝します。

0 投票する
1 に答える
1930 参照

python - @login_required はフラスコログインをリダイレクトしません

私はフラスコログインをpostgreSQLと組み合わせて作業しています。いつでも、特定の定義にリダイレクトしない定義の前に @login_required デコレータを持っています。ここに私のコード:

初期化.py

私のモデル:

そしてここに私の見解:

したがって、ここから、url: localhost:5000/main にアクセスするたびに、ログイン ページが表示されます (まだログインしていない場合)。その後、入力を入力して、コマンド ラインにあるものを作成します。

POST リクエストを作成した後、メインの定義を取得しようとしたように見えますが、システムはログイン ページを許可せず、再度返します。

0 投票する
0 に答える
87 参照

python - Google Appe Engine と Flask - ユーザー モデルを変更するには?

Flask アプリを Google AppEngine に移動しようとしていますが、実際には、新しい空のプロジェクトを開始しています...

私はこれらのデコレータを持っています:

しかし、パスワード、Facebook ID、その他のフィールドなど、いくつかの資格情報を使用して「データベース」にユーザーモデルを作成したいと考えています。

Flask+GAE でユーザー モデルを作成し、アプリケーションで使用するにはどうすればよいですか?

ありがとう!

0 投票する
3 に答える
1197 参照

python - Flask-Login: 特定の属性によるエラー

次のように、Flask-Login で動作するユーザー関数を作成して使用しようとしています。

ただし、このコードを使用しようとすると、次のエラーが表示されます。

AttributeError: 'User' オブジェクトに属性 'is_active' がありません

メソッドを手動で実装しているにもかかわらず、この回答に出くわし、機能を からclass User(db.Model)に変更してこれを修正しようとしました。class User(db.Model, UserMixin)これを行うと上記のエラーが解消されましたが、次のことがわかり始めました。

NotImplementedError:id属性がありません - オーバーライドget_id

ここで何が間違っていますか?という名前の属性はありませんが、(上記のように) 関数idを設定しました。get_id上記の機能が取り上げられていない特定の理由はありますか?

特に myuser = User.query.get(form.username.data)を toに渡すと、エラーが発生しlogin_user()ます。

0 投票する
1 に答える
264 参照

python - Python で関数デコレータを確認する方法

私は(素晴らしい)Flaskフレームワークを使用してWebサイトを構築しています。このフレームワークでは、次のようなフラスコログイン @login_requiredデコレーターによっていくつかのルートが保護されています。

誰かがログアウトすると、通常、ログアウトを押したときに表示していたページにリダイレクトされます。しかし、ログインする必要があるページ (つまり、@login_requiredデコレータがあるページ) からログアウトすると、ログアウト後に 401 Unauthorized エラーが発生します。したがって、ユーザーを元のページにリダイレクトするときに、元のページに@login_requiredデコレーターがあるかどうかを確認し、ある場合はフロント ページにリダイレクトします。

現在のログアウト ビューは次のようになります。

request.referrerしたがって、このコードでは、@login_requiredデコレータがあるかどうかを確認したいと思います。どうすればそれができるか知っている人はいますか?すべてのヒントは大歓迎です!

0 投票する
2 に答える
3042 参照

python - フラスコログインでアカウントごとにシングルユーザーを確保する

私がFlask-loginを理解する方法は、認証されると、各リクエストで送信されるユーザーIDを含むCookieを設定して、サーバーがリクエストを(ログインした)ユーザーに関連付けることができるようにすることです。ユーザーIDは、ユーザーIDといくつかのブラウザ設定(ユーザーエージェントだと思います)の関数としてほとんどエンコードされています。

これからいくつかの問題が発生し、誰かがそれらにコメントして解決策を提案できるかもしれません.

  • クライアントは、ユーザー ID を推測し、同じ cookie エンコード関数を使用することで、ログインしているユーザーのふりをしてコンテンツを要求できます。
  • 複数のユーザーがアカウント資格情報を共有する場合、2 台の異なるマシンから同じユーザー アカウントを使用できます (これを制限したいのですが、ユーザーが 1 台のマシンで同じセッションの複数のタブを開くことを許可したいと考えています)。

認証時にランダムなシークレット トークンを生成するサーバー側メカニズムを実装できます。このトークンは、ユーザー レコードと共に保存され、セッション Cookie になります。これを使用して、認証されたユーザーのみが 1 台のマシンにログインできるようにすることができます (1 台のマシンからの複数のタブがまだ機能していることを願っています)。フラスコログインにはすでにそのようなメソッドが含まれていますか?これは一般的に私の要件を満たすのに適していますか?

0 投票する
2 に答える
458 参照

python - これは誰かをログインさせるための適切で安全な方法ですか?

わかりました、私はプログラミングに本当に慣れていません (データベース接続を作成し、そこから読み書きする方法を今日学んだばかりです)、ユーザーをログインさせ、ある種のページを表示できる基本的なサイトを作成しようとしています。ユーザーがログインしている場合は異なります。Flask、Flask-session、Sqlite3 を使用して突き刺すことにしました。基本的に認証は次のとおりです。ユーザーはフォームを使用してログインし、フォーム データは sqlite3 データベースの情報に対してチェックされます。それが正しければ、対応する値が CLIENT 側の Cookie に書き込まれます。これは誰かがログインする方法として受け入れられますか? 私の無知を許してください、しかし私はプログラミングに本当に慣れていないので、ここで自分の答えを探すための重要な用語がいくつかありません. 私は周りを検索しましたが、これがログイン/アウトを行うための受け入れられた方法であるかどうかを判断できませんでした.

私のサイトは機能しますが、実際に従来の意味でログインまたはログアウトしているのかどうかわかりません。また、いくつかのルートが奇妙に壊れているか隠されていることに注意してください。サイトを稼働させるために、テンプレートを含めませんでした:

from app.py import init_db

init_db()

python app.py

ここに私のアプリファイルがあります:

モデル

スキーマ.sql