2012-12-13 3 views
0

고객을위한 외부 사용자에 대한 인증을 구현하려는 프로젝트에서 작업하고 있습니다. 제대로 작동하는 것 같습니다.kohana3.2의 여러 인증 드라이버

최근에 일부 사람들 (위에서 언급하지 않은 사람)이 페이지 내용의 일부를 편집 할 수 있어야한다는 또 다른 요구 사항이 추가되었습니다. 우선 염두에 두어야 할 몇 가지 편집기가 개별적으로 인증 할 수 있도록 별도의 ORM/파일 인증 드라이버를 사용하는 것입니다.

Kohana 3.2에서 동시에 두 개의 Auth 드라이버를 사용할 수 있습니까?

답변

1

예. 다른 드라이버를 동시에 사용할 수 있습니다. 그냥 대신 표준 싱글의 또 다른 인스턴스를 만들 :

// default Auth 
$config = Kohana::$config->load('auth'); 
$auth = new Auth($config); 
$user = $auth->get_user(); 
// special Auth for administration 
$config2 = Kohana::$config->load('admin_auth'); 
$auth2 = new Auth($config2); 
$admin = $auth2->get_user(); 

제한 :

  1. 당신은 (driversession_key 값은 달라야합니다) CONFIGS 다를 사용해야합니다. 일부 설정은 클래스에서 정의되며 config (예 : "기억"쿠키 authautologin)에 의해 변경 될 수 없습니다.
  2. 이름이 하드 코드되어 있기 때문에 기본 ORM 모델 (Model_User, Model_Token, Model_Role)을 공유 할 수 없습니다. 그러나 ORM 드라이버 & 파일 드라이버를 사용할 수 있습니다.
1

Kohana의 Auth 모듈은 기본적으로 두 개의 드라이버 사용을 지원하지 않습니다.

그러나 새 드라이버를 매우 쉽게 구현할 수 있습니다. http://kohanaframework.org/3.3/guide/auth/driver/develop

당신의 _login 방법에 다음과 같은 논리를 넣어하는 것입니다 할 수있는 간단한 일이 :

  1. 확인 당신은 기존 드라이버를 복사하여 여기에, 그것을 수정하여 새로운 드라이버 작성에 대한 지시 사항을 따르 수 있습니다 유효한 로그인을위한 외부 사용자 데이터베이스
  2. 외부 사용자 데이터베이스에 유효한 사용자가 있으면 true를 반환합니다.
  3. 외부 사용자 데이터베이스에 유효한 사용자가없는 경우 대신 로컬 사용자 데이터베이스를 확인하십시오.
  4. 사용자가 로컬 데이터베이스에있는 경우 true를 반환합니다.
+0

저는 이미 별도의 드라이버를 가지고 있으므로 동시에 로그인 할 필요가없는 경우 이것이 가능한 솔루션 인 것으로 보입니다. 나는 getter로 is_external 프로퍼티만을 추가 할 것이므로 - 고객은 에디터 파트에 액세스 할 수 없으며 그 반대도 마찬가지이다. – bjauy

+0

저는 여전히 Auth에서 파생되고 동시에 작업하는 두 개의 사용자 정의 인증 클래스의 경우를 조사 중입니다. 따라서 한 컨트롤러에서는 테스트 고객으로 인증되고 다른 제품에서는 편집기로 인증됩니다. – bjauy