【发布时间】:2010-08-13 08:53:59
【问题描述】:
正如标题所示,我继承了一个 php/MySQL 应用程序,该应用程序的程序代码编写得相当好,但只有一个管理员用户登录。客户自然希望将功能拆分为不同的用户/角色,并最终使用最佳实践技术更新应用程序代码。
对于在管理部分更新某人的用户名的示例,原始版本仅显示一个预先填充了用户名的文本字段(为简洁起见简化了代码):
<input type="text" name="username" value="<?= $username; ?>">
然后根据正则表达式检查 POST 并将其保存到数据库中。
我被要求查看如何更改现有代码,以便它可以处理不同的用户“角色”,并且非常高兴地模拟了一个示例应用程序,其中包含 user、role、permission 等表、user-role 和 role-permission 来解释这在实践中是如何工作的。我只是想知道你们中是否有人对如何将权限写入代码库有任何提示?将模板或函数中的现有代码简单地包装成如下内容是否明智:
// $access_type can be the result of a function call, an array value, etc.
switch($access_type){
case 'edit':
echo '<input type="text" name="username" value="' . $username . '">';
break;
case 'readonly':
echo $username;
break;
case NULL:
default:
// Don't display anything.
}
我的问题是,对于更大的代码块,这种扩展效果如何?有几个“交互功能”使用大量的 HTML 和 JavaScript 来一次回传多个值。我们会为每个角色有效地拥有这个自定义控件的单独版本。将每个版本粘贴到 switch 中有点味道(无论是内联代码还是作为单独的文件包含在内)......同样,在后端,处理 POST 的脚本将根据角色有多个版本。
我知道一定有一百种方法可以做到这一点,但其他人过去做过什么?如果你有一些见识,你能不能用程序风格来演示它,因为在这个项目中没有 OO 可以看到!谢谢!
【问题讨论】:
标签: php security permissions coding-style