|
|
1
3
这取决于您的权限模型是什么,并且没有“一种正确的方法”可以做到这一点。这是一个接近的问题。重要的是,无论你选择什么,你都要始终如一地使用它。 在我最近的项目中,我遇到了几个不同的模型。最简单的方法之一是基于页面的权限,如果您使用基于页面的流,并使用对象作为支持,这是很好的方法:在页面顶部定义应该访问它的人,以防重定向。这是最简单的一个,但在特定的应用程序中非常有用。 相反,如果您使用对象来做您的主流程,那么您应该保护您的对象方法(而不是类实例化)。如果您有一个只能由特定用户调用的“save()”方法,那么首先,当您输入该方法时,请检查您的权限。
我目前使用的是MVC模式,我有一个控制器,它将操作分派给它的子代。它唯一的公共方法是
要记住的一件重要事情是:永远不要在用户界面上展示用户不允许做的操作(除非你试图强迫他购买你的“pro版本”,即);-) |
|
|
2
1
我已经写了一个非常可靠和健壮的CMS系统。我是这样做的,我希望你能推断出一些关于自己解决问题的信息。
希望这有帮助。 |
|
|
3
0
我认为最好的方法是拥有权限类。 然后您可以在创建对象或在对象中进行检查。
看看怎么做 zend acl component |
|
|
4
0
在类中验证会在类和权限授权之间生成依赖关系,这是不好的,因为您将两个可能不同的项捆绑在一起。你可以通过 Inversion of Control (例如) dependency injection 或者像我一样 authorisation notifications using Emesary . 在类外验证可能更糟,因为存在授权检查错误或完全错过的真正危险。它还会在对象之间创建错误类型的链接,因为对象本身不受控制。 如果要在创建对象时在对象外部执行此操作,则最好要求对象提供 interface 例如可以由单独的对象验证的iaauthorisable。 例如
如果$mysomething为空,则不允许。显然,这需要适当地扩展和设计,这留给读者作为练习。 |
|
|
5
0
面向对象的基础知识
我的方法
如果有10个脚本/页面与1个类对话,并且1或2个脚本需要对某些操作进行身份验证,那么我将把身份验证构建到这些1或2个脚本中。(或将它们与.htpasswd放在子文件夹中)
但是,当您使用MVC结构时,所有内容都是一个类,因此它成为决定哪个类的问题。
|