좋아 점에서 설명한대로 사용자를 인증 할 수있는 세션 ID를 일단
<yourwebsite.com>/?client_session_id=<session_id>&client_name=<client_name>
, 이것은 장고를 인증하는 방법은 다음과 같이 예를 들어 귀하의 웹 사이트를 참조하는 클라이언트 요청 PHP에서 사용자를 얻거나, PHP에서 장고 암호를 "읽는"방법.
나는 오픈 ID가 최선의 해결책이라고 생각하지만 오늘은 동일한 데이터베이스를 공유하는 PHP 응용 프로그램에서 장고 사용자를 인증했고 이것은 내가 해결 방법은 다음과 같습니다
<?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;
}
?>
의 핵심은 형식을 이해하는 장고는 암호를 저장 : 그래서 예를 들어 나는 AUTH_USER 행의 암호는 "admin"과 "관리자"사용자 및 암호 필드를했다
[알고리즘] $ [소금] $ [해시]
:
sha1$63a11$85a93f217a72212b23fb0d5b95f3856db9575c1a
알고리즘은 "sha1"이며 임의로 생성 된 소금은 "63a11"이고 암호화 된 해시는 "85a93f217a72212b23fb0d5b95f3856db9575c1a"입니다.
PHP에서 누가 암호 해시를 생성합니까? 당신은 간단 소금과 원시 비밀을 연결하고이 경우, SHA1의 알고리즘과 해시 :
<?php
$salt = '63a11';
$pass = 'admin';
echo sha1($salt.$admin); // prints "85a93f217a72212b23fb0d5b95f3856db9575c1a"
?>
하는 것은 어렵지 않았다 그! Django 소스에서 관련 코드를 읽으면됩니다.
PHP 응용 프로그램을 전혀 수정할 수 있습니까? – oggy
BTW, 올바른 용어는 "Djangonauts" –