で説明したように、ユーザーを認証することができます[OK]を、これはジャンゴを認証する方法ですPHPからのユーザ、またはPHPからDjangoのパスワードを "読み込む"方法。
私はOpenIDのが最善の解決策だと思うが、私は今日、同じデータベースを共有するPHPアプリにDjangoのユーザを認証するために持っていたし、これは私が解決方法です:
<?php
/* Generates crypted hash the same way as Django does */
function get_hexdigest($algorithm, $salt, $raw_password) {
if (!array_in($algorithm, array('md5', 'sha1'))) {
return false;
}
return $algorithm($salt.$raw_password);
}
/* Checks if password matches the same way Django does */
function check_password($raw_password, $django_password) {
list($algorithm, $salt, $hsh) = explode('$', $django_password);
return get_hexdigest($algoritm, $salt, $raw_password) === $hsh;
}
?>
をキーにしたフォーマットを理解することですDjangoはあるパスワードを保存します。だから、例えば私はAUTH_USER行のパスワード「管理者」と「管理者」のユーザーとパスワードのフィールドを持っていた
[アルゴリズム] $ [塩] $ [ハッシュ]
あった:
sha1$63a11$85a93f217a72212b23fb0d5b95f3856db9575c1a
アルゴリズムは「sha1」、ランダムに生成されたsaltは「63a11」、暗号化されたハッシュは「85a93f217a72212b23fb0d5b95f3856db9575c1a」です。
だから、あなたは誰がPHPで暗号化されたハッシュを生成しますか?あなたは簡単に塩と生のパスワードを連結し、アルゴリズムでハッシュします。この場合、sha1:
<?php
$salt = '63a11';
$pass = 'admin';
echo sha1($salt.$admin); // prints "85a93f217a72212b23fb0d5b95f3856db9575c1a"
?>
これは難しくありませんでした。私はDjangoソースの関連するコードを読むことでそれを得ました。
PHPアプリケーションをオプションで変更していますか? – oggy
BTW、適切な用語は "Djangonauts" –