まず、「あなたはほとんど確実にauthenticate_user()
を使用する必要はありません」とコメントします。プラグインはすべてあなたのためにそれを処理することができます。
ただし、「ハッシュしない」というのは間違っています。ここでそれはどのように動作するのですか? authenticate_user
キーワードはすべての認証領域をループし、それぞれ の場合、そのプロバイダのauthenticate_user()
メソッドに、ユーザ名とパスワード を受け入れるかどうかを確認するように要求します。プロバイダDatabase
は、 レコードをDBから取り出し、$self->match_password()
( Provider roleからのもの)を使用して検証します。そのコードチェック から記憶されたパスワードがデータベース{scheme}
で始まり、そうであれば、(それだけでワイヤ上に来ていたよう プレーンテキストで、)そのユーザが入力したパスワードを検証する Crypt::SaltedHash->validate
を使用する場合、格納されたと一致する、 をハッシュデータベース内に保存されたパスワードがハッシュされた場合に入力したパスワードはハッシュと一致する場合
if ($correct =~ /^{.+}/) {
# Looks like a crypted password starting with the scheme, so try to
# validate it with Crypt::SaltedHash:
return Crypt::SaltedHash->validate($correct, $given);
}
ので、はい、それはそれは 一致します。passsword(コード内の$correct
は、以下の保存されたパスワードです)。保存されたハッシュされたパスワードがどのように見えるかの例
は、ここに同梱generate-crypted-password
ユーティリティの 出力です:
[[email protected]:~]$ generate-crypted-password
Enter plain-text password ?> hunter2
Result: {SSHA}z9llSLkkAXENw8FerEchzRxABeuJ6OPs
はalgorhythmsが、それによって をサポートされているかの詳細についてはCrypt::SaltedHash docoを参照してください、と(RFC-3112と が異なるデジタルアルゴリズムを使用することによって拡張されています)。
authenticate_user
のコードはまさに のフードの下にあるコードであることに注意してください。ただプラグインをさせる例について
があなたのために仕事をし、考えてみます。
get '/secret' => require_login sub {
my $user = logged_in_user();
return "Hi, $user->{username}, let me tell you a secret";
};
...それはそれです。 require_login
は、プラグインがユーザーがログインしている場合は をチェックし、そうでない場合は、ログインページ にリダイレクトしてログインすることを意味します。authenticate_user
に電話する必要はありません。 は設定する必要はありませんセッション変数など。 logged_in_user()
は、ログインしたユーザーに関する情報のハッシュリファレンスを返します( ルートコードにrequire_login
があるため、この ポイントに1があることが保証されているため、確認する必要はありません)。
の代わりに適切な役割があることを確認する必要がある場合は、代わりにrequire_role
を参照してください。
[Dancer2 :: Plugin :: Auth :: Extensible](https://metacpan.org/pod/Dancer2::Plugin::Auth::Extensible)のドキュメントをスキミングしたように見えません。 –
私は最後の手段として私が見つけることができるすべてのドキュメントを読んだ後、このような場所に投稿します。あなたが典型的なrtfmタイプの応答を与えるには、それ以外の理由で少なくとも "それはあなたがスキミングしたように見えません"という質問を少なくともバックアップしてください。 – jeffez
パスワードはプレーンテキストで保存する必要があるという考え方はどこですか?表示されたコードは、ユーザーから提供された資格情報を受け取ります。彼らは明らかに平文ですが、どこにも保存されておらず、ちょうど電線で受信されています。 'authenticate_user'はハッシュの世話をして、フードの下で比較します。どのようにそれは完全に透明です。それは、さまざまなプロバイダの束が付属していますが、あなたは何か他のものが必要な場合は、あなた自身のロールバックすることもできます。 – simbabque