Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день господа. Я заранее извиняюсь , может мой вопрос кому то покажется странным мягко выражаясь. Но я только начал изучать Laravel , поэтому как и у многих новичков возникает много проблем и вопросов.
Используя composer я установил последнюю версию Laravel 5.7 . Работаю на локальном компьютере . В своем проэкте испоьзую Auth и Can:manipulate .С Auth вроде как вопросов не возникает , если пользователь не авторизован , то при попытке открыть какую нибудь страницу через get запрос веб браузера пользователь перенаправляется на страницу авторизации . Но вот если я использую в controller Can:manipulate . То при попытке открыть запрещенные страницы через get запрос веб браузера пользователь не перенаправляется на страницу авторизации , а браузер выдает ошибку 403 Вы не имеете прав доступа и имеется кнопка Go Home при нажатии на которую идет перенаправление на страницу
localhost/dashboard . А мне бы как то хотелось контролировать этот процесс и перенаправлять пользователя на какую нибудь из страниц своего сайта. Возможно ли это? И если да , то как??? Так как самостоятельные потуги пока ни к чему меня не привели. Заранее спасибо. Всем хорошего дня.
Изменено DzonyBB (10.10.2018 08:17:58)
Не в сети
Прочитав документацию на форуме :
"Свои страницы HTTP-ошибок
В Laravel можно легко возвращать свои собственные страницы для различных кодов HTTP-ошибок. Например, для выдачи собственной страницы для ошибки 404 создайте файл resources/views/errors/404.blade.php. Этот файл будет использован для всех ошибок 404, генерируемых вашим приложением. Представления в этой папке должны иметь имена, соответствующие кодам ошибок. Экземпляр HttpException, созданный функцией abort(), будет передан в представление как переменная $exception."
Сделал так . Все нормально работает. Теперь возник вопрос насколько это криво ?
Ну и вопрос остается открытым как мне контролировать программно. Так как этот способ мне не очень нравится потому что хотелось сделать перенаправление с кодом 301 например , а не то , что выдает браузер при F12 :
Failed to load resource: the server responded with a status of 403 (Forbidden)
Спасибо. Хорошего дня.
Не в сети
Наконец то я нашел решение . В контроллере Handler дописал . И теперь меня перенаправляет на страницу входа не с кодом 403 , а redirect с кодом 302 .
public function render($request, Exception $exception)
{
if (!$exception instanceof AuthorizationException)
{
return redirect()->guest('login');
}
return parent::render($request, $exception);
}//End render
Не в сети
Куда подевались все акулы Laravel???? Или это запрещенная тема??? Я вчера полазал по модулю Handler . Но никак не получилось из массива $exception извлечь номера ошибок такие как 403,404,500 и так далее. Единственное чего добился так это обработку события Ошибка авторизации и аунтефикации . Перерыл кучу инфы в инете , но так ничего толкового по Laravel не нашел. Неужели никто не задавался этим вопросом???? Спасибо .
Не в сети
Сделал так . Все нормально работает. Теперь возник вопрос насколько это криво ? big_smile
ты сделал по документации, всё работает и ты спрашиваешь "насколько это криво?". какого ответа ты ожидаешь интересно?! что делать по примерам из доков плохо или чего?
видимо именно так ты и думаешь - что доки это плохо, потому что дальше ты залогиненного пользователя пытаешься перенаправить на страницу входа.
наверное ты не знаешь что такое авторизация и аутентификация. отсюда вытекают дальнейшие непонятки.
авторизация это предоставление права на действие. в случае отсутствия такого права генерируется соответствующее исключение и нормальная реакция это страница со статусом 403.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
ты сделал по документации, всё работает и ты спрашиваешь "насколько это криво?". какого ответа ты ожидаешь интересно?! что делать по примерам из доков плохо или чего?
Вот тот то меня и смутило , что я сделал по документации (кстати ничего против не имею), но я уже описал мои опасения. Что при нажатии в браузере на F12 я вижу переадресацию все равно с кодом 403 , а погуглив , я прочитал , что поисковые системы SEO не очень то приветствуют переадресацию с кодом 403 , вот поэтому и спрашиваю мнения. Как делают более опытные спецы.
авторизация это предоставление права на действие.
Спасибо за ссылку , я имею небольшое представление , но обязательно еще раз изучу.
Спасибо , что ответили , но хотелось бы что нить поконкретнее. Например , где можно было бы посмотреть насчет кодов ошибок . Как то же Laravel определяет ? Или он просто по событиям группирует и выдает средний код ошибки ? Но еще раз спасибо. ))
Не в сети
не очень понятно что вас смущает в стандартном поведении
нет у пользователя прав на действие
ну и отдавайте 403 эта ошибка для этого и создана
Не в сети
ну и отдавайте 403 эта ошибка для этого и создана
Лично меня ничего не смущает.И мне без разницы какой код ошибки , если я знаю от чего она произошла. Но, я уже сказал , что в интернете проскакивают такие фразы типа.(Не буду давать ссылку на сайт , а просто процитирую)
Для SEO-оптимизатора наличие на сайте страниц с такой ошибкой недопустимо. Поисковики крайне негативно относятся к факту того, что страница с ошибкой 403 доступна для индексации и видна в поисковой выдаче – выходит, она не имеет информационной ценности и являет собой обыкновенный мусор или того хуже – сгенерированный под запрос дорвей. Крайне важно найти на сайте все страницы с ошибкой 403 и запретить их индексацию через robots.txt
Вот просто и хотелось услышать мнение Бывалых , насколько эти факты достоверные. Спасибо .
Не в сети
Для SEO-оптимизатора наличие на сайте страниц с такой ошибкой недопустимо.
ну по логике без авторизации на эти страницы и попасть нельзя
какое там SEO
робот то не попадет
вернее сначала проверяйте аутентификаццию потом права и все ок
Изменено varz62 (06.11.2018 21:57:44)
Не в сети
робот то не попадет
Ну теоретитески Вы правы , в данном случае эта ошибка возникает в том случае , если не авторизованный пользователь будет пытаться получить допступ напрямую используя get запрос например к страницам списка пользователей или на страницу редактирования товара предназначенной для администраторов.В принципе простой пользователь ,может и не будет знать о наличии таких страниц. Это лично я сам тестирую свое приложение на предмет безопасности , так сказать занимаюсь хаккерством на своем сайте . ))
Так , что я не думаю , что роботы-поисковики будут заниматься такой же ерундой как я. ))
вернее сначала проверяйте аутентификаццию потом права и все ок
с аунтефикацией и распределением прав доступа все нормально , никаких ошибок не возникает . Я уже сказал , что ошибка может возникнуть например , если не авторизованный пользователь наберет в строке запроса например catalog-admin , тогда и возникает эта ошибка отсутствие прав доступа.
Не в сети
Страницы 1