問題タブ [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 に答える
1973 参照

python - KeyError:Flask_securityの「セキュリティ」?

Flask を使用して Web サイトを構築しています。現在、Flask_Securityをトークン ベースの認証に使用しようとしています。get_auth_token() メソッドを使用して、ユーザーから auth_token を取得したいと考えています。残念ながら、このメッセージの下にスタック トレースが表示されます。

誰が何が悪いのか知っていますか?すべてのヒントは大歓迎です!

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

python - Flask_Security で auth_token_required を機能させる方法は?

Flask_Securityを使用しようとしている Flask を使用してアプリのトークン ベースのバックエンド (API) を構築しようとしています。私はPeewee ORMを使用しているので、このガイドに従って基本的なセットアップを構築しました。次に、ユーザーをログインさせるビューと、実際に有用なデータを提供するビューを構築する必要があります。

したがって、トークンを返すログインビューは次のようになります。

これは正常に機能します。応答としてトークンを取得します。を使用して別のビューを保護しauth_token_required、トークンをヘッダーとして使用したいと考えています。だから私は次のようにこれを試します:

しかし、Flask を開始すると、AttributeError: 'str' object has no attribute '__module__'. ドキュメントは、その使用法についてもあまり役に立ちません。

これを機能させる方法を知っている人はいますか?どんなヒントでも大歓迎です!

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

python - 「外部」クラス モデルをフラスコ sqlalchemy に関連付ける

さまざまな Python モジュールに中央クラス モデルを使用します。このモデルは、SQLAlchemy を使用して定義されます。クラスはすべて declarative_base から継承します。

たとえば、モデル定義は次のようになります。

この同じモデルを使用するフラスコ Web アプリケーションを構築しています。私たちは、flask-sqlalchemy が、そのモデルで使用されるすべてのクラスがセッションのアクティブなインスタンスを渡すことによって定義されていることを期待するように設計されているように見えるというトリッキーな問題を発見しました。以下は、「適切な」flask-sqalchemy クラス モデル定義の例です。

上記のフラスコ sqlalchemy の例では、既にインスタンス化された sql セッションが必要であることに注意してください。SqlAlchemy モデルをフラスコに統合する方法について完全に途方に暮れているため、これは私たちをぞっとさせました。特にフラスコ セキュリティ スイートを使用したいと考えています。

この問題は SO で以前に提起されました。例: 既存の sqlalchemy モデルでフラスコ sqlalchemy を使用するには?

私たちの要件は、そこで応答を受け入れた人の要件とは異なります。応答は、User.query を使用できなくなることを指摘していますが、これはまさに保持しなければならないことの 1 つです。

素敵で洗練された中心的なクラス モデルの定義を放棄して、flask-sqlalchemy が必要と思われるものを採用することは現実的ではありません。モデルを SQLAlchemy() オブジェクトに関連付ける方法はありますか? クラスで .query() メソッドを取得するためのボーナス ポイントは、flask-security で必要と思われるものです。

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

angularjs - angularを使用してフラスコからトークンで保護されたファイルを提供します

  • フラスコで提供され、トークンベースの認証で保護されたファイルがあります。
  • angularアプリからダウンロードを提供したい
  • トークンはAngularセッションに保存され、各 $http.get または post のヘッダーに入れられます

しかし、フラスコパスへのリンクを配置しただけでは、角度のある $http.get() ではないため、トークンはリクエストヘッダーに追加されませんが、これを行うことはできません (右?)。

URLにトークンをクエリ文字列パラメーターとして渡したくありません。ユーザーにダウンロードを提供するにはどうすればよいですか? 最初に $http.get() で角度を付けてから、ファイルのダウンロードとしてトンネルを通過する必要がありますか?

ログイン後のトークン ストレージ:

各 $http get または post に挿入されます。

フラスコ(フラスコセキュリティ付き)部分:

これを解決するにはどうすればよいですか?

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

flask - Flask でのグループ権限の割り当て

Flask-Security と MySQL を使用する Flask アプリがあります。残念ながら、Flask-Security はグループ/マルチテナント管理を提供していません ( https://github.com/mattupstate/flask-security/issues/285 )。

以下を実装したいと思います。

  1. ログイン時に、ユーザーは自分のログイン資格情報を入力します。
  2. ユーザー DB を照会して、ユーザーがいくつのグループ (管理、経理、営業など) に属しているかを確認します。
  3. ユーザーが複数のグループに属している場合は、ポップアップが表示され、ユーザーが属しているグループが一覧表示されます。
  4. グループを選択すると、ユーザーがログインし、グローバル変数 (tenant_id または group_id) がユーザーのセッションに設定されます。このグローバル変数を使用して、ユーザーによる DB 検索を事前にフィルター処理できます。

手順 2 と 4 を実装する方法がわかりません。このような実装に Flask g.object ( http://flask.pocoo.org/docs/0.10/api/#flask.g ) を使用できますか?

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

flask - Jinja2 と Flask を使用してテンプレート レベルで詳細な ACL を実装するにはどうすればよいですか?

Jinja2 と Flask を使用してテンプレート レベルで詳細な ACL を実装するにはどうすればよいですか?

これは、Jinja2 コンテキスト ディクショナリまたは事前構築済みの Flask ACL ライブラリを使用していないものです。これは私自身の疑似 ACL であり、単純にデータベースにロールを照会し、それをインデックス関数に取得します。

( The Flask Mega-Tutorialから変更されたソース)

このようなFlaskとACLのライブラリをいくつか見てきました

https://github.com/mikeboers/Flask-ACL

しかし、Flask ライブラリに関係なく、レンダリングされたテンプレート内の特定のアイテムに ACL を適用する方法が見つかりません。

「機密情報」という名前のボタンがあるが、そのページは誰でも利用できる場合、そのボタンだけを保護するにはどうすればよいですか? render_template関数は既に呼び出されています。

または、特定のスーパーバイザー レベルの誰かだけが見ることができる編集された一連の情報があり、別のテンプレートを作成したくない場合があります。

近いのは、Jinja2 の contextfilter だけです。

http://jinja.pocoo.org/docs/dev/api/#jinja2.runtime.Context

しかし、私はそれを使用する方法がわかりません。

上記の方法は、少数のグループしかない場合を除き、非常に扱いにくいようです。より大きなセットには、入れ子のグループと優先度が必要になります。

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

python - Flask-Securityで登録フォームのフィールドをオーバーライドするには?

Flask-Security のデフォルトの登録フォームをオーバーライドするには、すべてのラベル属性を削除することです。ドキュメントにはカスタマイズ ビューのセクションがありますが、例ではフィールドをフォームに追加するため、デフォルトを変更する必要があります。