Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.10.2018 08:17:35

Использование Can и Auth в Laravel 5.7

Добрый день господа. Я заранее извиняюсь , может мой вопрос кому то покажется странным мягко выражаясь. Но я только начал изучать 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)

Не в сети

#2 10.10.2018 08:39:49

Re: Использование Can и Auth в Laravel 5.7

Прочитав документацию на форуме :
"Свои страницы HTTP-ошибок
В Laravel можно легко возвращать свои собственные страницы для различных кодов HTTP-ошибок. Например, для выдачи собственной страницы для ошибки 404 создайте файл resources/views/errors/404.blade.php. Этот файл будет использован для всех ошибок 404, генерируемых вашим приложением. Представления в этой папке должны иметь имена, соответствующие кодам ошибок. Экземпляр HttpException, созданный функцией abort(), будет передан в представление как переменная $exception."
   Сделал так . Все нормально работает. Теперь возник вопрос насколько это криво ? big_smile
Ну и вопрос остается открытым как мне контролировать программно. Так как этот способ мне не очень нравится потому что хотелось сделать перенаправление с кодом 301 например , а не то , что выдает браузер при F12  :

Failed to load resource: the server responded with a status of 403 (Forbidden)

Спасибо. Хорошего дня.

Не в сети

#3 05.11.2018 23:04:34

Re: Использование Can и Auth в Laravel 5.7

Наконец то я нашел решение . В контроллере 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

Не в сети

#4 06.11.2018 13:24:29

Re: Использование Can и Auth в Laravel 5.7

Куда подевались все акулы Laravel???? Или это запрещенная тема??? Я вчера полазал по модулю Handler . Но никак не получилось из массива $exception извлечь номера ошибок такие как 403,404,500 и так далее. Единственное чего добился так это обработку события Ошибка авторизации и аунтефикации . Перерыл кучу инфы в инете , но так ничего толкового по Laravel не нашел. Неужели никто не задавался этим вопросом???? hmm Спасибо .

Не в сети

#5 06.11.2018 16:26:25

Re: Использование Can и Auth в Laravel 5.7

Сделал так . Все нормально работает. Теперь возник вопрос насколько это криво ? big_smile

ты сделал по документации, всё работает и ты спрашиваешь "насколько это криво?". какого ответа ты ожидаешь интересно?! что делать по примерам из доков плохо или чего?

видимо именно так ты и думаешь - что доки это плохо, потому что дальше ты залогиненного пользователя пытаешься перенаправить на страницу входа.

наверное ты не знаешь что такое авторизация и аутентификация. отсюда вытекают дальнейшие непонятки.
авторизация это предоставление права на действие. в случае отсутствия такого права генерируется соответствующее исключение и нормальная реакция это страница со статусом 403.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#6 06.11.2018 16:42:27

Re: Использование Can и Auth в Laravel 5.7

ты сделал по документации, всё работает и ты спрашиваешь "насколько это криво?". какого ответа ты ожидаешь интересно?! что делать по примерам из доков плохо или чего?

  Вот тот то меня и смутило , что я сделал по документации (кстати ничего против не имею), но я уже описал мои опасения. Что при нажатии в браузере на F12 я вижу переадресацию все равно с кодом 403 , а погуглив , я прочитал , что поисковые системы SEO не очень то приветствуют переадресацию с кодом 403 , вот поэтому и спрашиваю мнения. Как делают более опытные спецы.

авторизация это предоставление права на действие.

  Спасибо за ссылку , я имею небольшое представление , но обязательно еще раз изучу.
Спасибо , что ответили , но хотелось бы что нить поконкретнее. Например , где можно было бы посмотреть насчет кодов ошибок . Как то же Laravel определяет ? Или он просто по событиям группирует и выдает средний код ошибки ?  Но еще раз спасибо. smile))

Не в сети

#7 06.11.2018 17:44:19

Re: Использование Can и Auth в Laravel 5.7

не очень понятно что вас смущает в стандартном поведении
нет у пользователя прав на действие
ну и отдавайте 403 эта ошибка для этого и создана

Не в сети

#8 06.11.2018 21:48:50

Re: Использование Can и Auth в Laravel 5.7

ну и отдавайте 403 эта ошибка для этого и создана

  Лично меня ничего не смущает.И мне без разницы какой код ошибки , если я знаю от чего она произошла. Но, я уже сказал , что в интернете проскакивают такие фразы типа.(Не буду давать ссылку на сайт , а просто процитирую)

Для SEO-оптимизатора наличие на сайте страниц с такой ошибкой недопустимо. Поисковики крайне негативно относятся к факту того, что страница с ошибкой 403 доступна для индексации и видна в поисковой выдаче – выходит, она не имеет информационной ценности и являет собой обыкновенный мусор или того хуже – сгенерированный под запрос дорвей. Крайне важно найти на сайте все страницы с ошибкой 403 и запретить их индексацию через robots.txt

Вот просто и хотелось услышать мнение Бывалых , насколько эти факты достоверные. Спасибо .

Не в сети

#9 06.11.2018 21:55:37

Re: Использование Can и Auth в Laravel 5.7

Для SEO-оптимизатора наличие на сайте страниц с такой ошибкой недопустимо.

ну по логике без авторизации на эти страницы и попасть нельзя
какое там SEO
робот то не попадет
вернее сначала проверяйте аутентификаццию потом права и все ок

Изменено varz62 (06.11.2018 21:57:44)

Не в сети

#10 06.11.2018 22:09:45

Re: Использование Can и Auth в Laravel 5.7

робот то не попадет

  Ну теоретитески Вы правы , в данном случае эта ошибка возникает в том случае , если не авторизованный  пользователь будет пытаться получить допступ напрямую используя get запрос например к страницам списка пользователей или на страницу редактирования товара предназначенной для администраторов.В принципе простой пользователь ,может и не будет знать о наличии таких страниц. Это лично я сам тестирую свое приложение на предмет безопасности , так сказать занимаюсь хаккерством на своем сайте . smile))
  Так , что я не думаю , что роботы-поисковики будут заниматься такой же ерундой как я. smile))

вернее сначала проверяйте аутентификаццию потом права и все ок

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

Не в сети

Подвал раздела