Должен ли я включить мою страницу администратора в проект angular или создать отдельную страницу? - PullRequest
0 голосов
/ 10 февраля 2020

Привет, я работаю над внешним интерфейсом для моего приложения SpringBoot. Я только начинаю учиться Angular. Я не уверен, есть ли проблема безопасности, если я создаю свою админ-страницу в том же проекте.

Администратор и пользовательская страница будут использовать много кода, но операции администратора (или даже данные) не должны не доступен для кого-либо еще.

Что я нашел до сих пор: Должен ли я создать два Angular проекта для администратора и пользователей?

Итак, создание одного Angular проект с двумя модулями должен быть путь к go верно? Но как мне подойти к этому? Или я могу просто создать проект с одним модулем с аутентификацией и ролями администратора / пользователя? Что будет лучшей практикой?

Спасибо

1 Ответ

0 голосов
/ 10 февраля 2020

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

Способ, которым я структурировал свой проект, примерно такой:

|- AppModule
|-- app components
|-- app services
|-- app routing
|
|- SharedModule
|-- components
|
|- AdminModule
|-- admin components
|-- admin services
|-- admin routing

И AppModule, и AdminModule импортируют SharedModule. AdminModule лениво загружается из моего root пути администратора в AppRouting следующим образом:

{
  path: 'admin',
  canLoad: [AdminGuardService],
  loadChildren: () => import('../modules/admin/admin.module').then(m => m.AdminModule)
}

Где AdminGuardService - защита маршрута, которая проверяет, есть ли у текущего пользователя доступ администратора.

Преимущество Ленивый загруженный модуль состоит в том, что он скомпилирован отдельно от AppModule и загружается браузером только при попадании моего пути администратора. Я сохраняю все свои заданные администратором c http-вызовы в моих службах администратора, чтобы они никогда не входили в мой основной комплект приложений.

С точки зрения безопасности ничто не мешает пользователям без прав администратора угадывать ваши URL администратора независимо от того, находится ли он в том же проекте или в другом проекте. Вся моя авторизация на сервере выполняется моим API. Поэтому, если пользователь без прав администратора угадывает URL-адрес администратора, он получит 401, и я перенаправлю его обратно в основное приложение.

...