2011-02-11 6 views
0

그래서 지금까지 비참한 액세스 제어 기능을 갖춘 응용 프로그램을 개발하고 있으며 적절한 솔루션을 최대한 빨리 사용해야합니다. 나는 Cookbook의 튜토리얼에 따라 CakePHP Auth와 Acl 컴포넌트를 추가했다. 수동으로 사용자를 추가하면 Aros 테이블에 적절하게 항목을 생성하고 SHA1은 비밀번호를 해시한다. 적절하게 모든 좋은 것들.CakePHP 응용 프로그램에 ACL 추가

이제 내 스킬 수준을 약간 넘어서는 것으로 입증되었습니다. 새로운 시스템에서 사용자가되어야하는 데이터베이스에는 1000 개 이상의 이름이 있습니다. MySQL 쿼리를 사용하여 Users 테이블에 덤프 시도했지만 두 가지 문제가 있습니다.

(1)이 방법으로 작업하는 것은 aros 테이블에 항목을 작성하지 않습니다. 나는 주어진 시간 동안 작동하도록 이것을 조작 할 수 있다고 확신하지만 내가 알고 싶은 단축키가 있는가?

(2) 이것은 내 머리를 긁어내는 원인입니다. 사용자를 수동으로 추가하면 암호가 자동으로 SHA1 해시됩니다. 사용자/로그인 페이지에서 로그인하면 입력 한 암호가 db의 해시 된 암호와 정확하게 일치하므로 액세스 할 수 있습니다. 그러나 내가 데이터베이스에 직접 덤프 한 비밀번호에 상관없이 로그인 페이지를 통해 액세스 권한을 부여 할 수는 없습니다. 처음에는 MySQL SHA1 함수를 사용하여 해시했습니다. 나는 이것이 좋은 생각이 아닐 수도 있다는 것을 이해합니다. Cake가 여분의 소금에 뿌려지기 때문입니다. 나는 Cake의 Security :: hash 함수를 통해 해쉬를 시도했다. 나는 Cake가 각 패스워드를 Users 테이블 자체에 저장하도록 두어 보았는데, 그것은 나로부터의 간섭없이 백그라운드에서 원하는 모든 해싱을 수행하게했다.

이 중 어느 것도이 사용자 이름/비밀번호 조합 중 하나를 사용하여 로그인 할 수 없습니다. 패스워드는 잘 보이고 해시되고, Security :: hash를 적용한 후에 입력 한 패스워드와 일치한다. 무엇을 놓치고있어이 일을하게 할 수 있습니까?

+0

이미 사용자 (사용자의 _ 기존 응용 프로그램 _)의 암호가 이미 해시 되었습니까? – joeb

+0

@joeb, 아니요, 그들은 이전에 해를 끼치 지 않았습니다 (어쨌든 충분히). 그것은 헤드 스쳐입니다. – thesunneversets

+0

CakePHP와 MySQL의 SHA1 함수간에 문제가 있음을 확인 했습니까? 나는 그 문제를보고있는 것 같다. –

답변

0

내가 당신의 입장에 있다면, 새로운 ARO 레코드를 자동으로 추가하고 Security::hash을 처리하는 등의 방법을 통해 케이크가 가지고있는 모든 것을 활용할 수있는 방법으로 이것을 수행하기 위해 Shell을 작성해야합니다. 레코드를 저장하기 전에 해시.

0

레코드의 경우 해시에 문제가 없었습니다. 저장 시점에 usergroup_id를 지정하지 않았습니다 (나중에 설정하려고했습니다!). 사용자 이름/비밀번호 조합이 맞더라도 사용자 그룹의 일부가 아닌 계정으로 로그인 할 수없는 것 같습니다.

관련 문제