【问题标题】:Allow entire controller in CakePHP Auth and allow() doesn't work在 CakePHP Auth 中允许整个控制器并且 allow() 不起作用
【发布时间】:2013-07-03 17:42:41
【问题描述】:

我已经尝试过

$this->Auth->allow() in beforeFilter() 但是,我需要将整个控制器添加为例外,即它需要公开且不需要用户登录。

只是执行$this->Auth->allow( every-function-in-this-controller )的捷径

答案?

编辑:

我有这个:

<?php

App::uses('AppController','Controller');

class AllzonesController extends AppController {

    public function __beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('index');
    }

    public function index() {
        $this->layout = 'main';
        $this->set('Hello',"Hello world");
    }
}

正在传输 Auth-login()

【问题讨论】:

    标签: php cakephp cakephp-2.3


    【解决方案1】:

    你提出的就是你想做的合适的方式

    public function beforeFilter() {
        $this->Auth->allow();
    }
    

    阅读API docs

    获取当前控制器中不需要身份验证的操作列表,或者没有允许所有操作的参数。

    因此,没有参数的函数应该允许普通用户(未登录)访问该控制器的每个操作。

    编辑:

    抱歉,您的标签中缺少版本参考。 In here 它说

     $this->Auth->allow('*');
    

    是 Cake 2.0(和以前的版本,如 @mark 所述)的适当方式

    【讨论】:

    • 我们在同一行 mate:book.cakephp.org/2.0/en/appendices/… 是的,它已被弃用(删除)。我正在使用 2.3.5
    • 那你应该打上合适的版本标签:) 反正如果你用allow(),它不会给你你想要的吗?
    • "是 Cake 2.0 的合适方式" => ...当然还有之前的 :)
    【解决方案2】:

    对于 CakePHP 2.1 以后的版本

    $this-&gt;Auth-&gt;allow() 而不是$this-&gt;Auth-&gt;allow('*')

    对于我的另一个问题__beforeFiter 不是一个神奇的功能!

    <?php
    
    App::uses('AppController','Controller');
    
    class AllzonesController extends AppController {
    
        public function beforeFilter() {
            parent::beforeFilter();
            $this->Auth->allow('index');
        }
    
        public function index() {
            $this->layout = 'main';
            $this->set('Hello',"Hello world");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多