我一直在谷歌上搜索几天,并且遇到了不同的方法来保护文件夹(htaccess,使用带有密码的PHP页面),但这些并没有解决我的问题。
问题: 我需要有一个网站,不同的客户只能访问他们的内容。客户A需要能够访问其所有Flash内容和网站。 Client-B和Client-C需要做同样的事情,但是没有一个可以访问彼此的内容(甚至通过直接链接到它)。用户名/密码系统不起作用,因为每个客户端有400-1000个用户,我自己或客户端都没有时间管理所有这些用户。
我查看了htaccess和htpasswd,但我不想使用任何用户名/密码组合。理想情况下,我想要一个“秘密词”或“密码”我可以从iPad应用程序或Air程序传递到服务器以获取我需要的内容。任何人都有一些关于处理这个问题的最佳方法的想法吗?
编辑:为了简化事情...我希望HTML网站和Flash swf在我的网络根目录之上,并能够将它们显示给用户。我怎样才能做到这一点?我有使用相对链接的HTML网站,因此使用php的readfile()会导致这些网站中断,因为这些链接不正确。
答案 0 :(得分: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"
答案 1 :(得分: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
}
在每个剧本中:
<?php
require_once("globals.php");
//... work with the user specific definitions, paths
include(CONTENT_PATH."/...");
//...
答案 2 :(得分:0)
您所做的是当用户创建他们的登录帐户时,他们可以选择他们正在使用的组。然后,当显示页面信息时,它会显示正常页面,但其中包含权限名称。您必须构建3个单独的内容页面,但他们只能看到所选组的内容。
homegroup1.php homegroup2.php homegroup3.php
如果用户在第一组中,则直接将是主页“group”.php用于显示。它会要求他们去的网站上的小组。