gpt4 book ai didi

PHP 角色系统 - 逻辑问题

转载 作者:行者123 更新时间:2023-11-29 10:24:40 24 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused 。它目前不接受答案。












想改进这个问题?更新问题,使其仅通过 editing this post 关注一个问题。

4年前关闭。




Improve this question




我正在开发一个小项目,我想根据页面用户访问实现一个“高级”角色系统。
我在处理这个方案背后的逻辑时遇到了一些麻烦,因为我希望能够添加和删除角色和权限,我想用这种方式来做。希望你能和我分享你的建议。

我的用户表在用户名、密码等字段旁边,它包含一个 用户级别 字段。

我计划创建以下方案:

角色表:

id - AI -> is referenced with **userlevel** field in users table
name - Role Name
description - Role Description Description

页表:
id - AI
page_link -> saves the link of the page
description

权限表:
id - AI
role_id -> referenced with **id** in roles table
page_id -> referenced with **id** in pages table

所以我的想法是:

应该以某种方式保护的每个页面:
  • 从 users 表中读取 用户级别
  • 搜索该角色是否存在于 角色 表中;
  • 如果没有,则拒绝访问,如果存在,则从用户权限中为 role_id 创建一个 page_id 的数组;
  • 根据每个 page_id from table 权限,从 table pages 为 pages_link 创建一个数组;
  • 读取URL,如果数组中的页面链接,则允许访问,否则拒绝访问;

  • 我的链接如下:
    /添加用户
    /删除用户/ user_id

    如果我授予页面/remove-user 权限,用户可以删除用户吗? (基本访问/remove-user/ user_id )

    我认为这是正确的方式吗?我在创建这样的系统时感到非常困惑。
    我真的很想访问页面和功能(例如,应该允许版主禁止用户但不能删除它 - 如果这些功能在同一页面上,我该如何实现?)。除此之外,我还需要另一个“功能”表,允许用户这样做或不这样做,并以这种方式创建代码?

    例如表 用户函数
    id
    role_id
    permission

    如果在这个表中有一个权限edit_users,那么在渲染页面时,如果在数组“feature”中,是否显示按钮?

    你能以这种方式指导我吗?
    没有这样的理论有更快的方法吗?
    我可以轻松地完成这段代码,我只是对这样的方案背后的逻辑过程感到困惑。

    谢谢

    最佳答案

    我个人的做法:

  • 检查页面是否公开(不限于任何用户),如果是,停止。
  • 检查用户是否登录,如果没有重定向到登录页面。
  • 检查用户的级别是否足以查看页面,如果没有重定向到他们的主页。

  • 我通常通过在每一页的顶部设置一个功能来完成上述所有操作:
    <?php
    require('system_loader.php');
    check_access(ACCESS_LEVEL_ADMIN);

    在我的配置文件中,我定义了一组当前角色:
    define('ACCESS_LEVEL_SUPERADMIN',1);
    define('ACCESS_LEVEL_ADMIN',2);
    define('ACCESS_LEVEL_MODERATOR',5);
    define('ACCESS_LEVEL_USER',10);
    define('ACCESS_LEVEL_PUBLIC',100);

    然后,这允许我在每个页面的顶部定义查看它所需的访问级别。

    因此,该函数的伪代码将是:
    function check_access($level_required) {
    if ($level_required= ACCESS_LEVEL_PUBLIC) return;
    if (user_session_is_not_valid) redirect to login
    if (user_level < $level_required) redirect to user account page
    }

    这是一个基本系统,但它可以让您不必担心逻辑,只要您在管理用户 session 方面做好一切准备。它依赖于权限的滑动比例,因此最高的值将始终拥有最多的权限,而最低的将只有公共(public)权限。

    请注意,将角色硬编码到系统中与您建议在数据库中拥有角色不同。可以应用相同的逻辑,但您需要检查数据库中的角色。

    我还应该指出,您提出的系统也可以正常工作。它会更复杂,并且会在个别功能等方面给予更大的控制。

    在我的示例中,您可以简单地限制使用条件编码,检查是否应允许用户执行特定功能。

    如果您希望角色不适合访问的滑动规模,那么您确实必须维护一个引用表,将访问级别与特定页面或功能联系起来。

    关于PHP 角色系统 - 逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545618/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com