問題タブ [flask-httpauth]
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.
python - Flask-httpauth: get_password デコレーターは、basic-auth でどのように機能するのですか?
http-basic-auth を簡素化するために、このフラスコ拡張機能を使用した人がいるのだろうか。
基本的に、私はこの例を理解していません:
デコレーターは、指定されたユーザーのクリア パスワードを返すように見え、get_password
それがユーザーが提供したものと一致する場合、承認が付与されます。
しかし、そもそもユーザーのクリア パスワードに誰もアクセスできないようにする必要があります。私は通常、クリア パスワードとユーザー名をバックエンドに送信し、パスワードをハッシュして、データベース内の既存のハッシュされたパスワードと比較します。
これはどのように想定されていますか?
アップデート:
ドキュメントへのリンクは、さらに光を当てます。これを達成するために必要な2番目のデコレータがあるため:
ルールは文字通りget_password(username) == hash_password(password)
これが機能することを理解する方法はget_password
、データベース内のユーザーのハッシュされたパスワードを返すことです。これは、hash_password
メソッドで定義されている現在ハッシュされているパスワードと同じである必要があります。
問題は、私はpasslib から sha256_cryptを使用していることです。
ここでは、指定されたパスワードをハッシュして、保存されているハッシュされたパスワードと比較することはできません。sha256_crypt.verify(password, hashed_password_in_db)
false または true を返す method を使用する必要があります。
これを達成する方法はありますか、それとも独自のカスタム ソリューションを作成する必要がありますか? ありがとう
python - フラスコの http-auth と単体テスト
やあ!
Flask-HTTPAuth によって実装されている HTTP 基本認証を使用して保護したルートがあります。curl を使用するとすべて正常に動作します (ルートにアクセスできます) が、単体テストの際に、正しいユーザー名とパスワードを指定しても、ルートにアクセスできません。
私のテストモジュールに関連するコードスニペットは次のとおりです。
Flask-HTTPAuth で必要なコールバック メソッドは次のとおりです。
任意のルート:
単体テストで次の例外がスローされます。
テストクライアントに指定したのとまったく同じ引数でcurlを実行するとすべてが正常に機能することをもう一度強調したいのですが、テストを実行すると、verify_passwordメソッドは呼び出されません。
ご助力ありがとうございます!
python-2.7 - フラスコ認証を使用したフラスコ安静:認証が異なる複数のHTTPメソッド
複数のHTTP(GET、POST、PUT、DELETE)メソッドを持つ同じURLを取得しようとしていますが、メソッドごとにフラスコ認証を使用した異なる認証があります。
私はクラスのようなもの以上を作成しようとしました
しかし、何が起こったのかrestful_api.add_resource(PostUser,'/User')
はオーバーライドされますrestful_api.add_resource(GetUser,'/User')
python - Flask-HTTPAuth verify_password 関数がユーザー名またはパスワードを受信しない
デコレーターでルートにアクセスしようとすると@auth.login_required
、ユーザー名とパスワードを入力するウィンドウが表示されます。この情報を入力すると、関数のパラメータusername_or_token
とは になります。データが空なのはなぜですか?password
verify_password
''
アップデート
コードを次のように簡略化しました。
を使用してこの機能をテストしていAdvanced Rest Client
ます。
http://localhost:8081/myapp/api/token
Authorization
ヘッダーも付けました。
これにより、次の出力が得られます。
Hello, !
ログ ファイル:
また、入力を求められることもありませsecurity credentials
ん。
もう 1 つの奇妙な点は、 return をfalse
inに変更してもverify_password
、同じ出力が得られることです。Hello, !
python - フラスコ-http認証でのローカルホストの問題
私は次のものを持っています:
api/token
を使用してルートにアクセスするとlocalhost
、 myusername
とを入力するよう求められますpassword
。その後、ログを確認すると、username_or_token
変数が''
.
奇妙なことに、私はまったく同じコードを自分online server
でテストしましたが、問題はありませんでした..
を使用してAdvanced Rest Client
います。これを使用するときは、ドロップダウン フィールドとタブの下plugin
に を追加して使用します。で実行するときも同じことをしています。Authorisation header
Login
Password
Basic
online server
を使用してXAMPP
います。他にどのような情報を提供すればよいかよくわかりません。
誰もこれを経験したことがありますか?
リクエストの詳細
HTTPIE 出力
もう一度、username
に設定し''
ます。
python - どこにでもデコレータを追加するのではなく、デフォルトの login_required
アプリで認証を処理するために Flask-HTTPAuth を使用しています。login_required
私には多くのビューがあり、それらすべてに追加したくありません。デフォルトでログインを必須にするにはどうすればよいですか?
python - Flask-restful アプリを再構築していますが、アプリを実行するために HTTP 認証を配置するのに問題があります
基本的に、次のようなディレクトリがあります。
私のauth.pyには、標準のHTTP基本ユーザー名/パスワード認証があります。これらは、ログインが必須の領域で使用し、各ユーザーを確認したいと考えています。Login.py はデコレーターを追加する必要がある場所ですが、このエラーのためにアプリ全体が実行されません: AttributeError: 'module' object has no attribute 'login_required'
デコレータを呼び出してから認証を要求するlogin.pyの私のコード。
まとめると、私の質問は次のとおりです。デコレータを使用できるように、flask-httpauth クラスを追加する方法と場所を教えてください。今の私の選択肢は、その認証コードを必要とするすべてのリソース クラスに貼り付けることかもしれませんが、それを整理するためのより良い方法があるはずです。ヘルプ?
angularjs - 基本認証ヘッダーが失われているようです
私は Flask RESTful サーバーと AngularJS クライアントを書いていますが、いわば送信中にユーザー名とパスワードの情報が失われているように見える問題に直面しています。
Javascript コンソールでは、クライアントが Authorization ヘッダーを期待どおりに送信していることがわかりますAuthorization: Basic username:password
。ただし、@auth.verify_password コールバック内では、両方とも空です。
コードのサーバー部分についてかなりの単体テストがあり、認証情報はそれらすべてに存在しているように見えるため、場合によってはヘッダー内から少なくともユーザー名とパスワードを取得できることは心強いです.
さらに、CORS 拡張機能をサーバー コードに追加し、サーバー全体で使用できるようにしました。以下の URL への OPTIONS (常に 200 を返す) は、同じ URL への GET (ユーザー名とパスワードの問題により 401 を返す) の直前に常に呼び出されるようです。
参照コード:
サーバー認証コールバック:
期待どおりに動作するサーバー ユニットのテスト コード:
ブラウザで検査すると適切なヘッダーを生成するが、認証コールバックで空のユーザー名とパスワードを生成する AngularJS コード: