gpt4 book ai didi

php - 用户级别和 OOP 架构

转载 作者:搜寻专家 更新时间:2023-10-31 20:52:32 25 4
gpt4 key购买 nike

我正在为后端开发一个登录系统。

将有许多用户级别/权限来执行特定任务。

一个成员可以有 1 个或多个级别。

执行此操作的最佳架构是什么?

我带来了这些解决方案:

表格:

Group
- group_id (P)
- group_name

Group_User
- group_id (F)
- user_id

如何与 OOP 方法联系起来?

我想到的 OOP 设计:

class User {

private $privateSalt = "Don't Tell Anyone! Q£$£$^$";

public function newAccount($email, $password, $firstName, $lastName) { }

public function login($email = 0, $password = 0) { }

private function _setSession($data) {
$_SESSION['logged_in'] = true;
$_SESSION['member_id'] = $data['member_id'];
$_SESSION['email'] = $data['email'];
$_SESSION['first_name'] = $data['first_name'];
}

public function logout() { }

public function isLoggedIn() { }

}

没有必要在 OOP 属性中声明用户详细信息,因为我已存储在 session 中?另外,如果用户刷新页面,建议再次检查用户 $_SESSION['member_id'] 到数据库?

最佳答案

登录系统实际上很容易做,但很难做好。实现密码恢复机制、用户和管理员的用户帐户管理、可以添加和编辑的多个角色,当然所有这些都需要以安全的方式完成。加上 OAuth 和 OpenID,登录系统是许多现代应用程序中最复杂的部分之一。

我会考虑查看 how others have tackled the problem , 有库和组件,例如 Zend_Acl这可以帮助大大简化任务,并使您避免遇到一些基本问题。话虽这么说,一定要探索你的想法,我的意思是你正在做的事情很棒,我说这些并不是要让你气馁。许多年前,我就开始了与您完全相同的道路。

话虽如此,我有几个关于您的新设计的问题要问。 newAccount 函数,那些是该函数所需的唯一参数吗?您可以考虑将对象传递给需要很多参数的函数,这样您就可以从 type hinting 中获益.函数login(),为什么参数设置为默认0?这些真的是该功能的默认值吗?乍一看 $email=null 和 $password=null 可能更好,但是没有电子邮件/密码可以登录吗?如果您的应用程序逻辑依赖于设置这些值,则可以使用一个函数签名来强制执行该逻辑。我认为这很好,但要保持主动性和好奇心。

快乐的编码, friend

关于php - 用户级别和 OOP 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6164280/

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