【发布时间】:2013-10-21 21:08:01
【问题描述】:
我正在学习 PHP,我很好奇是否有优雅的解决方案来设计网站的身份验证界面。
基本上,我将拥有三种类型的用户:普通用户、管理员和“高级用户”。 每种类型的用户都有自己的操作。
这是我当前代码的简要草图:
# Regular User = Non-Authenticated
interface IRegularUser {
# Will return an object of a class that implements this interface
public static function loginUser ($name, $pass);
}
# Authenticated User
class AuthUser extends RegularUser {
public function logoutUser();
}
interface IAdmin {..}
interface IPowerUser {...}
class User implements IRegularUser {}
class Admin extends AuthUser implements IAdmin {}
class PowerUser extends AuthUser implements IPowerUser {}
在检查登录是否正确的脚本中,我会写类似这样的内容:
$user = new User();
$user = $user->loginUser($_POST['username'], $_POST['password']);
if (get_class($user) == get_class(new Admin()))
# Redirect to admin_home.html
else if (get_class($user) == get_class(new PowerUser()))
# Redirect to power_user_home.html
我正在尝试使用 PHP 的 OOP 功能,以便在我的应用程序中的实体之间建立一些约束(例如:只有通过获取 User 对象,您才能登录,并获取 Admin 类型的对象,或者超级用户)。
我觉得我的身份验证系统有点笨拙,我想知道 webapp 身份验证系统是否有通用的设计模式。
【问题讨论】:
-
"我想知道 webapp 身份验证系统是否有通用的设计模式。"没有。你似乎有一个好的开始,为什么不开始呢?
标签: php authentication