В моих контроллерах я ограничиваю доступ, предварительно назначая свои функции admin_
, а затем позволяя функции AppController isAuthorized()
проверить, является ли пользователь администратором. Есть ли способ сделать это со страницами (из PageController)? Мы создали главную страницу администратора (например, панель управления), которую пользователи не могут просматривать, если они не вошли в систему, но пользователи, не являющиеся администраторами, могут ее просмотреть. Я не могу понять, как это предотвратить.CakePHP: Можете ли вы использовать префикс администратора со страницами?
ответ
Что вы подразумеваете под страницами? Что-то статическое, которое подается PagesController или файл .htm (l), расположенный на вашем веб-сайте?
Если ваш случай - это первое, вы можете реализовать эту логику для контроллера страниц. Если это второй - запрос не проходит через CakePHP (или любой другой серверный скрипт) вообще, так что вы не можете контролировать доступ к нему через Cake.
Если ваша ситуация - это что-то другое, уточните свой вопрос, и я буду рад помочь.
Как говорится в комментарии, вы находитесь в ситуации No: 1. В классе декларации PagesController он говорит:
class PagesController extends AppController {
это означает, что вы можете использовать любую логику, которая в AppController в зависимости от того класса, который расширяет AppController. Таким образом, вы можете использовать isAuthorized()
в PagesController.
Все, что вам нужно сделать, это создать метод с именем, аналогичным вашему «представлению панели администратора», и разрешить доступ к нему только для администраторов. Или просто проверьте роль пользователя.
Это первый. Я хочу, чтобы роль администратора просматривалась на определенной странице, обслуживаемой сервером PagesController – emersonthis
Предполагая, что первый параметр запрошенная страница, и вы можете поймать его, используя эту инструкцию:
$this->request->pass[0];
вы можете использовать isAuthorized функцию, чтобы решить вашу проблему делать что-то вроде этого ...
public function isAuthorized()
{
$page = strtolower($this->request->pass[0]);
if ($page = 'admin_page')
{
if ($this->Auth->user('Role.role_field') == 'Admin')
{
return TRUE;
}
else
{
return FALSE;
}
}
else
{
// This will authorize users for the other pages
return TRUE;
}
}
Надеюсь, это поможет. Всегда проверяйте CookBook: иногда вам нужно проверить старые книги, чтобы найти то, что вам действительно нужно. Счастливое кодирование!
- 1. Можете ли вы использовать префикс браузера перед всеми тегами css?
- 2. Невозможно изменить префикс администратора в cakephp 1.3
- 3. Можете ли вы использовать @Autowired со статическими полями?
- 4. Можете ли вы вызвать сервлет со ссылкой?
- 5. Можете ли вы переопределить псевдокласс со стилусом
- 6. Можете ли вы помочь мне со слушателем?
- 7. Можете ли вы использовать csv.DictReader без файла?
- 8. Можете ли вы использовать итератор в массиве?
- 9. Использование NavigationWindow со страницами
- 10. Можете ли вы порекомендовать хороший менеджер файлов django для администратора?
- 11. Можете ли вы изменить метку поля в приложении администратора Django?
- 12. Можете ли вы использовать jQuery в ePub
- 13. Можете ли вы использовать @model как @ViewBag?
- 14. Можете ли вы использовать jquery в sessionStorage?
- 15. Можете ли вы использовать ForEach в словаре?
- 16. Можете ли вы использовать odbc_connect() при спусках?
- 17. Можете ли вы использовать SharedPreferences внутри фрагмента?
- 18. Можете ли вы использовать ValidationRules в ListBox.SelectedItems?
- 19. Можете ли вы использовать методы в Backbone?
- 20. Можете ли вы использовать C++ в Xcode?
- 21. Можете ли вы использовать AngularJS с Parse.com?
- 22. Можете ли вы использовать word_diff с Gitlab?
- 23. Можете ли вы использовать DataContractSerializer вне WCF?
- 24. Можете ли вы повторно использовать дочерние макеты?
- 25. Можете ли вы использовать $ (this) внутри $ .post()?
- 26. Можете ли вы использовать область в Rails?
- 27. Можете ли вы использовать CollectionViewSource внутри DataTemplate?
- 28. Можете ли вы использовать раскадровку без UINavigationBar?
- 29. Можете ли вы использовать BroadcastReceiver внутри метода?
- 30. Можете ли вы использовать RSpec, Shoulda, RCov?
Этот учебник http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html#authorization-who-s-allowed-to-access- что показывает вам как выполнить основы этого. Весь учебник полезен, но связанный с ним раздел относится к тому, что вы хотите сделать. – kais
Спасибо, но я читал эту главу в течение нескольких дней, и она вообще не говорит о PagesController. Мои другие контроллеры работают нормально, но мне не помогли авторизовать пользователей на * странице * – emersonthis
Если вы используете действие DisplayController, это позволит любому пользователю просмотреть его. Попробуйте создать отдельное действие с префиксом admin_ и использовать его для управления информационной панелью. http://book.cakephp.org/2.0/en/controllers/pages-controller.html – kais