【问题标题】:Disable authentication for given action in the same controller在同一控制器中禁用给定操作的身份验证
【发布时间】:2014-08-06 02:34:53
【问题描述】:

我的控制器中有以下代码 sn-p:

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

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

public function show() {
    ...
}

我的show 操作需要身份验证,但email 不需要。

email 操作代表当我的 hadoop 作业完成时接受 jobEndNotifier 的通知,因此我无法在该页面上进行身份验证,因为 hadoop 将访问该页面。 (https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/mapred/JobEndNotifier.html)

我的show操作基本上会为完成的hadoop作业生成和可视化报告,当我的作业完成时,我想在系统中自动生成它们(缓存它们),所以稍后当用户访问页面时,它将是从缓存中加载,速度会快得多。这就是我从email 操作调用show 操作的原因。

当然,默认情况下我可以在不登录的情况下访问email 操作,但是当我从email 调用show 操作时,它会将我重定向到主页,提示您必须登录。

简而言之:如果我从email 操作调用show 操作,我可以设置它不需要身份验证吗?由于页面没有渲染,所以只进行计算。

提前致谢。

【问题讨论】:

  • 问题中的代码有什么错误?根据您在show 中描述的代码应该在一个模型中 - 由两个控制器操作调用。但是它会按照描述的那样工作,这可能意味着您正在查看错误并做出错误的假设。 it will redirect me to the home page saying you have to be logged in.
  • 是的,感谢您指出这一点。我首先认为这是一个“自动”重定向,因为 Auth 组件因为 show 操作需要身份验证,但不是,是我通过检查其他失败的条件。现在可以了,谢谢。

标签: php cakephp authentication hadoop php-5.4


【解决方案1】:

按照你的逻辑, $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() {
  ...
}

【讨论】:

  • 你认为这会影响什么?
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 2020-01-25
  • 1970-01-01
  • 2013-05-05
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
相关资源
最近更新 更多