禁用同一控制器中给定操作的身份验证

6bc51xsx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(351)

我的控制器中有以下代码段:

public function beforeFilter() {
    $this->autoRender = false;
    ...
    $this->Auth->allow('email');
}

public function email() {
    ...
    $this->show();
    ...
}

public function show() {
    ...
}

我的 show 操作需要身份验证,但是 email 不是。
这个 email action表示在hadoop作业完成时接受jobendannotifier的通知,因此我不能在该页上进行身份验证,因为hadoop将访问该页https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/mapred/jobendnotifier.html )
我的 show action基本上为完成的hadoop作业生成并可视化报告,当我的作业完成时,我希望在系统中自动生成它们(缓存它们),因此稍后当用户访问页面时,它将从缓存加载,速度会快得多。这就是我打电话给 show 来自 email 行动。
我当然可以访问 email 默认情况下不登录的操作,但是当我调用 show 来自的操作 email 它会将我重定向到主页,说你必须登录。
简而言之:如果我调用 show 我的行动 email 它不需要身份验证吗?由于不呈现页面,因此只进行计算。
提前谢谢。

2w2cym1i

2w2cym1i1#

按照你的逻辑,$this->auth->allow('email');要绕过电子邮件方法的身份验证,
同样的方法,你可以设置绕过显示从电子邮件功能,如

public function beforeFilter() {
$this->autoRender = false;
...
$this->Auth->allow('email');
}

public function email() {
...
$this->Auth->allow('show'); /* allow show here**/
$this->show();
...
}

 public function show() {
  ...
}

相关问题