問題タブ [flask-security]

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 に答える
1656 参照

python - モバイルでの Flask API のユーザー認証

シンプルなjQueryモバイル+ PhoneGapアプリをパッケージ化してダウンロードするためのAPIをFlaskで作成しています。私が理解しているように、データベースへのすべての呼び出しは、JavaScript、AJAX、および JSON で行う必要があります。アプリはユーザーに関するものであり、すべてのビューはログに記録されたユーザーからデータを取得するため、認証を続行する方法がわかりません。私が理解しているように、ワークフローは次のようになります。

  • ユーザーのログイン (json でエンコードされたユーザー名とパスワード)
  • サーバーは、そのユーザーの有効期限付き (つまり 24 時間) のトークンを生成します
  • このトークンは、モバイル アプリに Cookie として保存されるか、ローカル ストレージに保存されます。
  • サーバーへのすべての呼び出しは、現在のユーザーを識別するこのトークンを使用して行われます。/api/token=12345
  • トークンの有効期限が切れると、新しいログイン プロンプトが必要になります

これをFlask-Security の認証トークンで実装することを考えました。これを達成するためのより簡単な方法はありますか?

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

python - メールではなくユーザー名によるフラスコセキュリティログイン

ユーザーが代わりにUserログインするモデルのフィールドが必要でしたusernameemail

私は定義しました:
app.config['SECURITY_USER_IDENTITY_ATTRIBUTES'] = 'username'

しかし、私はまだ取得しています:

電子メールがフラスコセキュリティにハードコードされているようです...

変更できますか?

edit : ユーザー モデル (コメントで要求されたとおり):

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

flask - 電子メールの代わりにユーザー名を表示して使用するようにflask.ext.security.forms.LoginFormをカスタマイズする方法は?

電子メールの代わりにユーザー名を表示して使用するようにflask.ext.security.forms.LoginFormをカスタマイズする方法は?

私はこれを試しました、

テンプレートを変更し、

メールの代わりに名前を使用するように userdb を変更しました

それでもフラスコセキュリティは、ユーザーではなくデータストアで電子メールを見つけようとします。

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

python - Flask-Security user_registered シグナルは Python 3.3 では受信されませんが、2.7 では機能します

次のリンクのように、flask-security を使用して登録するときにユーザーのデフォルトの役割を設定するために、user_registered シグナルを使用しようとしています: Flask Security でのデフォルトの役割の設定

私の検索では、フラスコセキュリティでこれに対してすでに対処されているバグがあったことがわかります:フラスコセキュリティからシグナルを取得していない修正-user_registeredシグナルの問題

ハンドラーが運なしでシグナルを受信したかどうかを証明するために、次のことを試しました。

ただし、ユーザーが登録されてシグナルが送信されたとしても、これは呼び出されません。

それが役立つ場合は、flask-security 構成を次のように設定しました。

Flask-Login および Flask-Principal からのシグナルは、シグナルが送信されたときに次のコード スニペットが正常に出力されることを確認できたので、うまく機能しています。

私のセットアップでは、python 3.3 (アナコンダ) を使用し、以下を使用しています: Flask==0.10.1,flask-login==0.2.11,flask-principal==0.4.0,flask-security==1.7.4,ウインカー==1.3。フラスコログインとフラスコセキュリティの両方のシグナルを調べたところ、フラスコセキュリティシグナルが機能しない理由がわかりません。

編集:

アプリのルートに追加print(user_registered.receivers)すると、レシーバーがあることが示されます{139923381372400: <function user_registered_sighandler at 0x7f42737145f0>}。この同じ print ステートメントをフラスコ セキュリティの registerable.py 内に置くと、user_registered.send(app._get_current_object(),user=user, confirm_token=token)受信者が一覧表示されません。{}

EDIT2:

問題は、python 3.3 の使用に関連しているようです。Python 2.7 環境を作成したところ、user_registered コードが期待どおりに機能しました。

再現する完全なコード:

base.html テンプレート:

0 投票する
4 に答える
21132 参照

security - フラスコセキュリティでフラスコ管理パネルを保護する方法

Flask を使用して作成されflask-admin、管理インターフェイスを提供するために統合された安全な Web API を探しています。私が検索したところ、flask-admin には管理パネルが/adminあり、デフォルトでは誰でもアクセスできることがわかりました。セキュリティを提供するために何が使用されるかを想定していなかったため、認証システムは提供されず、完全にオープンです (セキュリティなし)。/adminこの API は本番環境で使用する必要があるため、URL にアクセスするすべての人にルートを開くことはできません。適切な認証が必要です。

views.py単にルートを配置してデコレータを介して認証を提供することはできません。これ/adminは、すでに作成されている既存のルートを上書きしてflask-adminエラーを引き起こすためです。

flask-adminさらに調査すると、 との 2 つのモジュールがあることがわかりますflask-securityflask-adminそれを保護する方法があることは知ってis_accessibleいますが、によって提供される多くの機能を提供しませんflask-security

エンドポイントと、などで/admin始まる他のすべてのエンドポイントを保護する方法が見つかりませんでした。/admin/admin/<something>

私は、フラスコセキュリティでこのタスクを実行することを特に検討しています。それが不可能な場合は、代替案を提案してください。

PS: 自分自身をロックできることはわかっていますngnixが、それは最後の選択肢です。それを介した認証システムがflask-securityあればいいのですが。

0 投票する
4 に答える
3868 参照

python - ユーザーの管理者(のみ)登録、Flask-Security

私は現在、Flask-Security (Flask-WTForms、Flask-SQLalchemy、および Flask-Login を含む) を使用して webapp のログインを構築しています。パスワードを忘れた場合も含め、ほとんどのログイン フローを簡単に設定できました。ただし、ユーザーを登録できる唯一の方法は、管理者のみがアクセスできるページを介して行うようにしたいと考えています。役割 (管理者、ユーザー) を構成し、次のビューを設定することができました。

これにより、管理者ロールを持つアカウントに正常に制限されたポータルが作成されます。ただし、Flask-security には、私がやろうとしていることを有効にする手段が組み込まれていないため、ここでどのように進めればよいかわかりません。

RegisterForm をオーバーライドして、正規表現を介してパスワード規則を適用しました。

基本的に、/adminregister にあるフォームが必要です。このフォームに管理者がアクセスすると、電子メール アドレスを入力できます。その時点で、最初にランダムで安全なパスワードを使用してデータベースにユーザーが作成され、次に同様のプロセスが行われます。パスワードを忘れると、パスワードをリセットするための 1 回限りのパスワード コードが作成されます。

私が見た便利なもの:

  1. Flask-security/views.py 内には、忘れたパスワード コードがあります。

    /li>
  2. Flask_security/registerable.py 内に register_user のコードがあります

    /li>

これら 2 つを何らかの形で組み合わせて、「/adminregister」で唯一のフィールド「Email」を含むフォームを送信すると、データベースに安全なランダム パスワードがメールに追加され、メール アドレスにパスワードを変更するためのリンク (理想的には、説明するメッセージ)。特に RegisterForm をオーバーライドしてフィールドを少なくし、同じ機能を持たせる方法が見つからないため、具体的にオーバーライドするものがないため、そのようなコードをどこに追加するかさえわかりません。

私のコードの構造は、フラスコセキュリティのドキュメントのクイックスタートに沿っています。

事前にご案内いたしますので、よろしくお願いいたします。

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

python - AttributeError: タイプ オブジェクト 'User' には属性 'query' がありません

私は大規模なデータベースを構築し、sqlalchemy (オリジナル - フラスコ SQLAlachemy ではありません) を使用しています。サイトにフラスコセキュリティを追加したいと思います.flask-SQLAlchemy(オリジナルではなく)に依存していることに気づきました.オリジナル。データベースへのユーザーの入力は機能しているようです。制限されたページに移動すると、ログインするように求められます (当然のことです)。正しい電子メール アドレスとパスワードを入力すると、エラーが表示AttributeError: type object 'User' has no attribute 'query'されます。エラーのトレースバックがコードを参照していないため、解決方法がわかりません。

これはsqlalchemyからflask-SQLAlchemyへの変換の問題である可能性があると考えて、新しいデータベースを作成する以外はすべて試したように感じます。この問題の解決に役立つフラスコセキュリティまたはフラスコ SQLAlchemy のドキュメントには何も見つかりませんでした。誰でもこれを解決する方法について考えがありますか?

これが私のコードです:

testing.py

database_setup.py

トレースバック エラー

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

flask - 危険なフラスコセキュリティクラッシュ

私はそれがバグではなく私だと確信していますが、それを理解するための支援をいただければ幸いです

私はその危険な中で墜落しています

.env/lib/python2.7/site-packages/itsdangerous.py:336: TypeError と関連するトレースバック部分は次のとおりです。

私はアプリをかなり簡単に定義しています:

値を印刷すると、次のことがわかります。

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

python - Flask-Security 変更登録フォームのポスト検証

Flask-WTF と WTForms を使用しており、次のようなフォームがあります。

私は Flask-Security を使用しています。これが私の登録フォームです。私のモデルにcode_idは、ForeignKeyフィールドであるという列があります。フォームからフィールドを削除し、バリデーターの実行後にフィールドcodeを追加してcode_id、登録時に文字列コードの代わりに整数の外部キーをモデルに送信したいと考えています。バリデーター内のフォームを変更することはできますが、それは私が知っているフォームのインスタンスを変更するだけであり、メイン フォームには影響しません。私がやりたいことをすることは可能ですか?