2013-03-27 4 views
2

Я использую расширение защищенных файлов, чтобы пользователи не могли напрямую обращаться к файлам в своем браузере.Безопасность PermissionFailure Перенаправление с помощью удлинителя ядра

Если проверка разрешения не удается, расширение вызывает следующий метод:

function fileNotAuthorized($body = "") { 
    Security::permissionFailure($this, $body); 
} 

Я смотрел на безопасности :: PermissionFailure и заметил, что к концу этого класса есть простираться крюк:

// Audit logging hook 
$controller->extend('permissionDenied', $member); 

по умолчанию метод PermissionFailure перенаправляет пользователей на страницу администратора для входа:

$controller->redirect(
      Config::inst()->get('Security', 'login_url') 
      . "?BackURL=" . urlencode($_SERVER['REQUEST_URI']) 
     ); 

Я бы предпочел, чтобы пользователи были перенаправлены на домашнюю страницу или на мою пользовательскую страницу формы входа при отказе в доступе к файлу.

Я попытался закреплять в метод с помощью удлинять:

class SecurityExtension extends Extension { 
function permissionDenied($member) { 
    $this->owner->redirect('member-login/login/?BackURL=/thevault/home/'); 
} 
} 

, а затем присвоить это расширение в моем _config.php файле:

Object::add_extension('Security', 'SecurityExtension'); 

К сожалению, мой код не осуществляется доступ и метод продолжает перенаправлять пользователя на страницу входа администратора. Комментарий выше расширений и передаваемого параметра, похоже, предполагает, что он предназначен для регистрации членов, поэтому я не уверен, что использование этого перехвата для перенаправления возможно. Если нет, есть ли более элегантное решение для настройки пользовательского перенаправления на Security :: PermissionFailure? Я хотел бы избежать взлома расширения.

На боковой ноте я также попытался установить set_login_url в мою пользовательскую форму входа. Хотя это перенаправляет несанкционированные пользователи в мою пользовательскую форму входа правильно, она также перенаправляет/admin в пользовательскую форму входа, которую я не хочу.

ответ

0

У меня также была эта проблема сегодня. Я просто попытался

Config::inst()->update('Security', 'login_url', '/myCustomLoginFormURL'); 

в MySITE/_config.php и он работает :)

 Смежные вопросы

  • Нет связанных вопросов^_^