Итак, у меня есть настройка моего сайта следующим образом.Переадресовать неавторизованных пользователей cakePHP на страницу реферера
Индекс перенаправляется на страницу входа, поскольку весь сайт зарегистрирован только для пользователей. Когда пользователь пытается просмотреть страницу, к которой у них нет доступа, они сбрасываются на страницу входа с сообщением «Вы не авторизованы для доступа к этому местоположению».
Я хочу изменить это, поэтому, если вошедший в систему пользователь попытался получить доступ к странице без аутентификации, он будет перенаправлен обратно на страницу реферера.
В моих индивидуальных контроллерах у меня есть метод isAuthorized, который проверяет роль пользователя и разрешает или запрещает доступ.
class AppController extends Controller {
public $theme = 'Default';
public function beforeRender(){
$this->set('referer',$this->referer());
$this->set('userData', $this->Auth->user());
}
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login',
'home'
),
'authorize' => array('Controller')
)
);
public function isAuthorized($user) {
// Admin can access every action
if (isset($user['role']) && $user['role'] === 'admin') {
return true;
}
// Default deny
return false;
}
}
Просматривая документацию я нашел unauthorizedRedirect и думал, что это может быть в состоянии сделать это, но я еще найти способ его реализации. Я пробовал пару вещей, но пока не могу найти ничего, что работает правильно.
Перенаправление назад к ссылающейся уже по умолчанию, если authenthenticated пользователь пытался получить доступ к страницам, он не имеет разрешения на доступ. Какова ваша версия CakPHP? – ADmad
Ах, да, я на 2.5. так ли мое перенаправление переадресации имени используется для входа в страницу входа, а не обратно к рефереру? –
Он перенаправляет URL-адрес, указанный в 'loginRedirect', только если он не найдет реферера. – ADmad