2012-07-17 2 views
0

웹 루트에 Drupal이있는 Apache 웹 서버가 있습니다. 또한 루트의 하위 디렉토리에 Drupal이 아닌 일부 컨텐츠가 있습니다. 사용자가 먼저 Drupal에 로그인하지 않은 한 비 Drupal 콘텐츠에 액세스 할 수 없도록하고 싶습니다.비 Drupal 인증을 위해 Drupal 사용

나는 mod_auth_mysql (enter link description here)을 사용하여 왔지만, 그것이 내가 원하는 것은 아니다. 그것은 사용자가 두 번 로그인해야합니다 (한 번은 Drupal로, 다른 한 번은 Drupal이 아닌 콘텐츠로 로그인).

솔루션은 .htaccess가 스크립트를 실행하여 사용자가 로그인했는지 확인하는 것과 같을 것이라고 생각합니다.이 스크립트는 Drupal 시스템에 연결되어야합니다.

액세스 허용 여부를 결정하기 위해 .htaccess를 사용하여 스크립트를 실행할 수 있습니까?

더 좋은 해결책이 있습니까?

답변

1

나는 이것을 부분적으로로드하여 (DRUPAL_BOOTSTRAP_SESSION을 통해) $ user global을 검사하여 구현했습니다.

<?php 
$base_url = 'http://'.$_SERVER['HTTP_HOST']; 
$drupal_path = "../../"; 
$cdir = getcwd(); 
chdir($drupal_path); 
require_once 'includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION); 
chdir($cdir); 

global $user; 

$access_granted = in_array('authenticated user', $user->roles); 
    if (!$access_granted): 
      //Show page 
     else: 
      //Show access denied 
     endif; 
?> 
+0

그건 내가 찾고있는 해결책의 일부이지만, "페이지 표시"대신 "1"을 인쇄하고 싶습니다. 및 "// 액세스 거부 표시", "0"을 인쇄하십시오. 그런 다음 mod_auth_external과 같은 모듈을 사용하여 그 결과를 파싱하고 웹 루트 아래의 하위 디렉토리에 페이지를 표시합니다 ... 문제는 내가 아파치 대신에 싱글 사인온을 선호한다는 것입니다. 비 Drupal 내용 – Lance

+0

나는 당신이 방금 정적 HTML 페이지 또는 이와 유사한 것을 보호하는 방법을 원한다고 생각했다. 나는 당신이 원하는 것을 확실히하는 해결책을 알지 못합니다. –