Laravel Защищает маршруты от других системных запросов

#php #laravel #api #authentication #office365

#php #ларавель #API #идентификация #офис365

Вопрос:

У нас есть эта система, к которой обращаются наши студенты, чтобы получить доступ к другим платформам, которые мы предоставляем, таким как Office 365 со студенческой лицензией и другими программами…

У нас есть доступ для создания этих ссылок доступа, создания маршрута и добавления некоторых доступных ТЕГОВ, которые они предоставляют, таких как электронная почта студента, уникальный код студента, мобильный телефон студента…

Эти ссылки работают как мост к нашему приложению Laravel 6.0, эта ссылка должна отправить учащегося на внутреннюю страницу, на которой он может создать свою учетную запись office 365 (если у них ее еще нет) и переопределить свои пароли, но проблема в том, что я не могу гарантировать, что этот зарегистрированный пользователь не изменит вручную (из инспектора разработчиков) данные, которые передаются из параметра маршрута, и получит доступ к другим данным учащихся и изменит свой пароль Office.

Дело в том, что я могу контролировать доступ к этой странице только по этому предыдущему URL (эта система, в которой зарегистрирован студент), и это работает, но я не могу использовать промежуточное программное обеспечение из своего приложения, которое проверяет, вошел ли пользователь в другое приложение, и у нас нет API для проверки подлинности из этой системы..

Есть ли какой-нибудь способ защитить наши маршруты от этой другой системы?

Метод контроллера, который получает эти параметры из другой системы и проверяет предыдущий URL-адрес:

 public function index($ra, $email){    if(url()-gt;previous() != "https://other.system/" ){  return view('errors.503');  }    $usuario = UsuariosMicrosoft::where('login', '=', $ra)-gt;get();    return view('portaloffice.pagina', compact('ra', 'email', 'usuario'));  }  

Это мой маршрут:

 Route::get('office365/{ra}/{email}', 'PortalOfficePortalOfficeController@index')-gt;name('portaloffice.usuario');  

Ответ №1:

Как правило, довольно плохая идея-защищать вещи, сохраняя URL-адреса в секрете. Их довольно легко обнюхать или угадать.

Обычно проекты защищаются от несанкционированного доступа с помощью Auth защиты, а также с помощью взаимосвязи между моделью, которую вы пытаетесь защитить, и User моделью.

После настройки моделей, отношений и охранников вы получите что-то подобное в своем контроллере:

 $user = Auth::user(); $user-gt;UsuariosMicrosoft-gt;get() return $user;