我正在学习 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 功能,以便在我的应用程序中的实体之间建立一些约束(例如:只有通过获取用户对象,您才能登录,并获取类型为 Admin 或 PowerUser 的对象)。
我觉得我的身份验证系统有点笨拙,我想知道 webapp 身份验证系统是否有一个通用的设计模式。