2012-04-03 13 views
1

私は今何日もグーグルで行きましたが、フォルダを保護するさまざまな方法(htaccess、パスワード付きのPHPページを使用しています)に遭遇しましたが、これらは私の問題に取り組んでいません。PHPフォルダとウェブサイトのコンテンツを別のユーザーに制限する方法は?

問題: 異なるクライアントがコンテンツにしかアクセスできないサイトが必要です。クライアント-Aは、すべてのFlashコンテンツとWebサイトにアクセスできる必要があります。 Client-BとClient-Cは同じことをする必要がありますが、他のすべてのコンテンツに(たとえ直接リンクすることによって)アクセスすることはできません。各クライアントには400〜1000人のユーザーがおり、自分自身もクライアントもこれらすべてのユーザーを管理する時間がないため、ユーザー名/パスワードシステムは機能しません。

私はhtaccessとhtpasswdを調べましたが、ユーザー名とパスワードの組み合わせは使用しない方が良いです。理想的には、iPadアプリやAirプログラムからサーバーに渡して必要なコンテンツを取得できる「秘密の言葉」や「パスフレーズ」が必要です。誰もがこれを処理する最良の方法についていくつかのアイデアを持っていますか?

EDIT:物事を簡素化する...私はHTMLサイトを持っていて、swfが自分のWebルートの上にあり、それらをユーザーに表示できるようにしたい。これをどうすればいいのですか?私は相対リンクを使用するHTMLサイトを持っているので、phpのreadfile()を使うと、これらのリンクが正しくないのでこれらのサイトが壊れてしまいます。

+0

各ユーザーではなく各クライアントにログイン/パスワードを割り当てることはできますか?すべてのユーザーが同じ権限を持っている限り、すべてのユーザーが同じ資格情報でログインするようにします。 –

+0

私は同じことを考えていた@SurrealDreams – Bono

+0

このプロセスをユーザーに透過的にしたい。クライアントには複数の請負業者がいますので、請負業者が契約を締結した後に請負業者にアクセスする必要はありません。だから、もし私がソフトウェアへのアクセシビリティを制限することができれば(それはユーザーの入力なしで)、それは理想的です。 – beefwellington

答えて

1

どのRDBMSを使用していますか?

mod_authn_dbdと基本認証ではそうすることができます。このような

何か、

AuthType Basic 
AuthName "My Server" 
AuthBasicProvider dbd 

# core authorization configuration 
Require valid-user 

# mod_authn_dbd SQL query to authenticate a user 
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s" 
+0

ログインフォームが表示されないようにしたいと思います。私はそれをユーザーには見えないようにする必要があります。 – beefwellington

+0

この場合、Ispcityによって提案されたソリューションは、お客様のニーズに最適なソリューションです。 –

0

あなたがリクエストを送信するソフトウェアを管理している場合は、ユーザを特定するすべての要求に独自のX-headerを追加することができます。 apache_request_headersで

()あなたが要求から独自のリクエストヘッダを取得することができます:最初のコメントの後 http://www.php.net/manual/en/function.apache-request-headers.php

==============

編集:

例えば

いくつかのコード:

globals.php

$headers = apache_request_headers(); 
$key = $headers["X-Authorization-Key"]; 

$authorized = checkAuthorization($key); 
if(!$authorized) { 
    header('HTTP/1.1 403 Forbidden'); 
    echo "Access denied!"; 
    exit; 
} 

//... db connection or something else to get user specific definitions, paths, ... 
//e.g.: 
$user = $users[$key]; 
define("CONTENT_PATH", "/var/www/mypage/data/".$user); 

function checkAuthorization($key) { 
    //... db connection or something else where the authorization-information are stored in 
    //check whether the $key is in the auth-info and return true/false for the result 
    return true; //or false 
} 
012トップ上のすべてのスクリプトで

<?php 
require_once("globals.php"); 
//... work with the user specific definitions, paths 
include(CONTENT_PATH."/..."); 
//... 
+0

これは私がカスタムヘッダーでhtaccess経由で制限できるものですか? – beefwellington

+0

私はそうは考えていませんが、ユーザーを認証するすべてのファイルの上に呼び出される関数を追加することができます(たとえば、すべてのスクリプトファイルの先頭に含まれるglobals.phpなど) –

0

あなたは何をすべきかは、ユーザーが自分のログインアカウントを作成するときに、彼らが使用しているグループを選択するオプションがあります。次に、ページ情報が表示されると、通常のページが表示されますが、アクセス許可の名前が表示されます。 3つの別々のコンテンツページを作成する必要がありますが、選択したグループの内容のみが表示されます。

homegroup1.php homegroup2.php homegroup3.php

ユーザーがグループ1であれば、直接には、表示のために家に「グループ」の.phpだろう。彼らは彼らが行くサイトのグループを呼び出すだろう。

関連する問題