【问题标题】:DRY principle in check user rights, how to avoid repeat of code on every page?DRY原则检查用户权限,如何避免每页重复代码?
【发布时间】:2021-06-22 18:54:03
【问题描述】:

我必须开发具有不同访问级别的页面的网站。 db 中已经有 users 表,对于需要权限检查的第一页,此代码工作得很好

$row = mysqli_fetch_assoc($res);
        $bitmask = $row['Rights'];
        $bm = new bitmask();
        $permarr = $bm->getPermissions($bitmask);
        if (!($permarr["admin"] || $permarr['superAdmin'])){
            $home_url = '../auth-login.php';
            header("Location: $home_url");
            echo 'access denied';
            exit();
        }

伪代码:

  1. 开始会话
  2. user = $SESS[user] 的数据库中选择权限
  3. 用实际需要的权限检查选择结果权限

是否可以避免在每个页面上只更改REQUIRED_RIGHTS 的相同代码?如何在 PHP 中使用一些可变参数 USER、REQUIRED_RIGHTS 来实现这一点?

【问题讨论】:

  • 我看到您正在使用 $permarr["admin"] 例如作为指定卷。您设置访问名册的方式是否仍然可以更改,还是我们应该认为这是固定的?
  • 我的位掩码类有 8 个角色,作为 BYTE 存储在 DB 中。添加更多角色不可能只有这 8 个 - stackoverflow.com/questions/66788824/…
  • @RakeshKumarOad:感谢您想在这里编辑问题。一点反馈:值得注意的是,代码格式本身就很好,也不需要加粗。此外,编程语言、库、软件等本身不是代码,因此不需要在预格式化中呈现。

标签: php session access-rights


【解决方案1】:

Actum Ne Agas: “不要做已经完成的事情!”

在我看来,您将要着手“完全从头开始创建一个网站”。相反,为什么不评估为 PHP 开发的众多框架,并将您的新网站建立在其中之一之上?

框架为许多常见问题提供了可靠的解决方案,例如这个问题。 (他们每个人都倾向于以不同的方式做到这一点。)

【讨论】:

  • 虽然我同意你的回答,但它并没有严格回答这个问题。我们可能想要断言该方法是给定的。也许列出这些框架解决这个问题的不同方式会很有趣,或者至少在尝试设计系统时列出一些考虑因素。但我担心这个问题的解释过于宽泛。保持代码 DRY 的方法就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2016-12-29
相关资源
最近更新 更多