php-用户级别和OOP架构

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

将有许多用户级别/权限来执行某些任务.

成员可以具有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 [‘member_id’]?

解决方法:

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

我会考虑查看how others have tackled the problem,其中有一些库和组件(例如Zend_Acl)可以帮助您轻松完成很多任务,并使您避免遇到一些基本问题.话虽这么说,但一定要探索您的想法,我的意思是您正在做的事很棒,我并不是要说这来阻止您.多年前,我以与您完全相同的方式开始.

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

编码愉快,朋友

上一篇:java-支持它的CharSequence实现上的indexOf


下一篇:C#Winform下使用WebKit、Geckofx、CefSharp心得