我正在处理我在 Zend 中的第一个用户登录,但我对 Zend_Auth 有点困惑。我读到的所有关于它的文章都直接在控制器中使用它。但对我来说,在我的用户模型中使用它更有意义,这样每个控制器都可以调用这些函数。
你们有什么感想?
关于 Zend 框架模型的文档真的很少。
我正在处理我在 Zend 中的第一个用户登录,但我对 Zend_Auth 有点困惑。我读到的所有关于它的文章都直接在控制器中使用它。但对我来说,在我的用户模型中使用它更有意义,这样每个控制器都可以调用这些函数。
你们有什么感想?
关于 Zend 框架模型的文档真的很少。
您可以将身份验证逻辑放入您的用户类中。
查看Matthew Weier O'Phinney 关于模型基础设施的博客文章,其中他展示了如何将authenticate
所需的方法添加Zend_Auth_Adapter_Interface
到自定义用户类。
在普通的网络应用程序“模型-视图-控制器”范式中(可以争论不休),视图/控制器部分应该包含与用户个人体验相关的代码。该模型应该仅用于与您的数据交互;它应该包含用于转换、存储和检索数据的方法,以及包含它的成员。与业务逻辑、身份验证和其他特定于会话的信息有关的所有内容都应该排除在“模型”之外。
Zend_Auth::getInstance() 将返回该实例,因此您可以在任何需要它的控制器中使用它,使 shure 保存成功登录时的数据,因此您不需要模型来验证或测试用户是否已通过验证。(在您的模型中包含 auth 会在您不需要它们时将不必要的模型类加载到内存中......,如果用户通过身份验证的测试应该放在引导程序中)
编辑以回复您的问题
使单个控制器女巫将具有身份验证和注销操作,这样您就可以将所有内容分开,您可以使用页面上的简单链接调用 loggout 函数,并在注销后重定向回 $_SERVER['HTTP_REFERER']; 因此,用户在单击 loggout 时最终回到了他正在查看的页面。