【发布时间】:2017-10-14 07:26:09
【问题描述】:
我正在运行我自己的 MVC 结构,但遇到了一个我不知道如何解决或修复的问题。我查看了其他各种问题,例如1、2,以及许多其他并没有太大帮助的问题。
我在数据库中有一个返回用户信息的表,如果找不到信息,则将他们重定向到一个页面以强制他们提交数据。
我创建了一个 Authenticated 类,它扩展了控制器(包含重定向方法):
abstract class Authenticated extends \Core\Controller {
protected function before() {
$this->requirePersonality();
}
protected function requirePersonality(){
if(!(new PlannerAuth())->getPersonality()){
$this->redirect('/app/personalization');
}
}
}
在我的应用控制器中,我有:
class App extends Authenticated {
protected function before(){
parent::before();
}
public function personalizationAction(){
View::renderTemplate('App/personalization.html');
}
}
before() 方法将在所有操作方法之前运行,因此当我在应用程序中运行任何 url 时,会发生以下逻辑:
Authentication before() 运行,将我重定向到 /app/personalization,一旦到了那里,它就会检查当前的 before(),它会再次重新运行身份验证 before() 方法,然后继续。 . 创建一个无限循环。
我还有一个after() 方法,它将在所有方法之后运行,但这不起作用,因为它不会强制用户进入个性化页面。
这只会在我在 App 控制器中运行任何方法时发生,我可以在另一个控制器中使用 personalizationAction,但这不是我需要的。
【问题讨论】: