.htaccess .htpasswd可以有用户组吗?PHP可以读取它们吗?

dphi5xsq  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(151)

如果.htpasswd包含joe:password,并且.htaccess使用基本身份验证,并且您以Joe的身份登录,则$_SERVER['PHP_AUTH_USER']/$_SERVER['REMOTE_USER']/$_ENV['PHP_AUTH_USER']/$_ENV['REMOTE_USER']都将变为joe
但是,如果您希望代码只允许某个特定的组执行某些操作,该怎么办呢?
例如,您是否可以在.htpasswd内将用户划分为组(例如accountant:joe:password),然后让PHP获取该组?

f0ofjuux

f0ofjuux1#

可以提供HTTP基本身份验证以及文件存储后端和组支持的Apache模块是mod_authz_groupfile,但组必须在单独的文件中定义:

admins: amy bill
support: charlie david edward
guests: fernando ivonne

但是我相信组是Apache内部的东西,它们不会暴露在PHP中,更不用说浏览器了。从PHP的Angular 来看,如果您能够物理访问数据文件,您总是可以自己获得信息:

$rawGroups = file('/path/to/.htgroup');
$usersByGroup = [];
foreach ($rawGroups as $rawGroup) {
    if (!preg_match('/^\s*(?P<group>[\S]+)\s*:\s*(?P<users>.+)\s*$/', $rawGroup, $matches)) {
        continue;
    }
    $usersByGroup[$matches['group']] = preg_split('/\s+/', $matches['users']);
}

Demo
如果您真的不需要Apache参与,那么就创建您自己的自制组系统。

相关问题