cakephp:如何在自定义isAuthorized模型方法中设置flash消息?

cakephp:如何在自定义isAuthorized模型方法中设置flash消息?,cakephp,Cakephp,嗨,我是cakephp的新手。我尝试创建一个简单的应用程序作为学习和实践。 我使用Auth组件实现了一个简单的用户处理系统。我在用户模型中创建了一个自定义的isAuthorized方法。 注册后,用户需要激活自己才能登录。如果用户未激活,“已授权”将返回一个false,并且我想通知用户他未激活。 但是我不知道如何在这个方法中设置flash消息(我尝试了,但没有成功) 正如你所见,我试过了,但失败了:)它不起作用 我也试着把 $this->Auth->authError = __("P

嗨,我是cakephp的新手。我尝试创建一个简单的应用程序作为学习和实践。 我使用Auth组件实现了一个简单的用户处理系统。我在用户模型中创建了一个自定义的isAuthorized方法。 注册后,用户需要激活自己才能登录。如果用户未激活,“已授权”将返回一个false,并且我想通知用户他未激活。 但是我不知道如何在这个方法中设置flash消息(我尝试了,但没有成功)

正如你所见,我试过了,但失败了:)它不起作用

我也试着把

$this->Auth->authError = __("Please activate your user first!",true);

在users controller login()中,未成功

我意识到Auth组件比controller方法激活得更快,如果用户未经授权,我会采取行动,这意味着它会在控制器有机会修改authError之前重定向。这就是为什么我会得到我的“标准”authError

当我使用自定义授权函数(在模型中)时,用户已经过身份验证(如果有条目),并且会话变量的Auth部分已经设置。 因此,如果我检查会话身份验证数据,我可以在控制器中确定用户是否经过身份验证而未激活。然后我设置了一条flash消息,这样用户就会收到来自auth组件的auth错误消息(无法访问该区域)和另一条消息作为普通flash消息来激活他/她自己

function login() {
    if(empty($this->Auth->data) and $this->Session->read('Auth.User.active')===0){
        $this->Session->setFlash(__('Please activate your user first.',true));
    }
}

我想这不是解决这个问题的最优雅的方法;)但我对网络编程和cakephp都是新手。

不,它没有。显示了在app_控制器中设置的基本authError消息。
function login() {
    if(empty($this->Auth->data) and $this->Session->read('Auth.User.active')===0){
        $this->Session->setFlash(__('Please activate your user first.',true));
    }
}