#php #cakephp #authentication #hadoop #php-5.4
#php #cakephp #аутентификация #hadoop #php-5.4
Вопрос:
У меня есть следующий фрагмент кода в моем контроллере:
public function beforeFilter() {
$this->autoRender = false;
...
$this->Auth->allow('email');
}
public function email() {
...
$this->show();
...
}
public function show() {
...
}
Моему show
действию требуется аутентификация, но email
нет.
email
Действие означает принятие уведомления jobEndNotifier о завершении моего задания hadoop, поэтому я не могу пройти аутентификацию на этой странице, поскольку она будет посещена hadoop. ( https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/mapred/JobEndNotifier.html )
Мое show
действие в основном генерирует и визуализирует отчеты для завершенного задания hadoop, и когда моя работа завершится, я хочу автоматически сгенерировать их (кэшировать) в системе, поэтому позже, когда пользователь посетит страницу, она будет загружена из кэша и будет намного быстрее. Именно по этой причине я вызываю show
действие из email
действия.
Конечно, я могу получить доступ к email
действию без входа в систему по умолчанию, но когда я вызываю show
действие из email
него, оно перенаправляет меня на домашнюю страницу с сообщением, что вы должны войти в систему.
Итак, вкратце: могу ли я установить, что если я вызываю show
действие из своего email
действия, ему не потребуется аутентификация? Поскольку страница не отображается, выполняется только вычисление.
Заранее спасибо.
Комментарии:
1. Какую ошибку вы получаете с кодом в вопросе? Из того, что вы описываете, код
show
должен быть в модели, которая вызывается обоими действиями контроллера. Однако это будет работать так, как описано, что, вероятно, означает, что вы смотрите на ошибку и делаете ложное предположение.it will redirect me to the home page saying you have to be logged in.
<- что это перенаправляет? Это не компонент аутентификации.2. Да, спасибо, что указали на это. Сначала я подумал, что это «автоматическое» перенаправление из-за компонента аутентификации, поскольку для
show
действия необходима аутентификация, но нет, это был я, проверив другие условия, которые не удалось выполнить. Теперь это работает, спасибо.
Ответ №1:
Согласно вашей логике, $this-> Auth-> разрешить (’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() {
...
}
Комментарии:
1. Почему вы думаете, что это повлияет на что-либо?