1

我多年来一直在做 PHP,并且知道如何检查用户是否已登录以及所有这些,但我找不到如何以 MVC 方式执行此操作的好例子。

我在想,如果成员页面的控制器类似于成员/成员页面1、成员/成员页面2,那么我可以使用“成员”一词的正则表达式来检查控制器的开头,如果它返回 true,那么我可以检查一下查看用户是否已登录。它可能会起作用,但这是最好的方法吗?

此外,对于控制器文件夹中的成员页面,是否最好将它们放在控制器文件夹中名为“members”的子文件夹中?无论如何,我肯定会这样做。

4

2 回答 2

4

最好的选择是检查控制器之外的用户访问权限。授权不是控制器的责任。你会破坏SRP。如果您想了解如何实现它,请阅读本主题:ACL 实现

至于站点的仅限会员区域,关于是否显示它们或显示错误的决定可以在访问控制器之前处理,或者由视图(如果您有活动视图而不是被动的)。

虽然更多时候你会涉及到这两个部分:授权服务更改模型层中的状态,然后视图通过选择在演示文稿中包含错误消息模板来对该更改做出反应。

于 2012-07-17T11:04:26.003 回答
0

一切都以不同的方式进行。我尝试为 PHP 构建一个小型 MVC 框架,这就是我完成身份验证的方式(真的很像 rails 方式:)

有一个'SessionsController'

SessionsController包含一个调用的方法,该方法'user_is_logged_in'返回用户会话的当前状态。然后将此方法添加到'_before'我想要保护的任何类的特殊方法中。

主应用程序总是_before在任何其他方法之前运行控制器操作(如果存在)。您也可以传入'except'它以阻止它执行某些操作,因此这只是检查用户是否在该操作中登录的情况。

当然,正如@tereško 强烈建议的那样,可能有更合规的方法可以做到这一点,但它适用于我正在开发的小型应用程序。

于 2012-07-17T11:16:05.353 回答