Как реализовать базовую безопасность для моего веб-приложения CRUD в ASP.net Core 2.2? - PullRequest
1 голос
/ 27 апреля 2019

Я следовал замечательному руководству Microsoft по созданию веб-приложения MVC с использованием Core 2.2 (https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/?view=aspnetcore-2.2).. После завершения этого руководства я смог создать аналогичное веб-приложение с использованием другого продукта. Для простоты я буду придерживаться с примером "Movie App" из учебника, чтобы задать мой вопрос.

Ниже приведено представление основного созданного приложения CRUD.

Screen shot of CRUD

Я хотел бы обеспечить базовую безопасность веб-приложения. До сих пор я не смог найти решение, которое соответствует моим потребностям, а именно:

  • Простота. Будет только один пользователь, которому нужны какие-либо привилегии, и это я. Привилегии будут в полной мере использовать функции CRUD (я единственный, кто может нажать на любую из синей ссылки на изображении выше).
  • Нет требований для входа в систему для публики. Я хотел бы, чтобы любой, кто посещает, мог сделать запрос из окна поиска (не показано на рисунке) и увидеть результаты. Я просто не хочу, чтобы они могли вносить какие-либо изменения.
  • Не нужно тратить слишком много времени на безопасность, чтобы я мог продолжить обучение в областях, более подходящих для новых разработчиков.

Большая часть опций, которые я нахожу, - это уровень предприятия, сложный за пределами моего уровня квалификации в данный момент или требующий, чтобы каждый был пользователем. Если я единственный пользователь, есть ли у меня способ легко создать одну учетную запись пользователя и, возможно, второй фактор, такой как блокировка IP-адреса? Если нет, то есть ли лучший подход для решения этой проблемы?

1 Ответ

0 голосов
/ 27 апреля 2019

ОК, одну вещь, которую вы должны реализовать, это «некоторый» тип безопасности / входа в систему - чтобы приложение знало, что «кто-то» вошел в систему. В вашем случае, оно должно знать, что «вы» вошли в систему.Вы должны реализовать какой-то базовый механизм аутентификации, чтобы «идентификация» пользователя была известна.Вы можете взглянуть на базовую аутентификацию cookie здесь .Вам не нужно внедрять какую-либо основную систему утверждений - достаточно простой аутентификации (для сценариев, не связанных с производством / обучением).

После того, как вы внедрили какую-либо систему аутентификации / входа в систему, после успешного входа в систему (аутентификация), система знает, что «пользователь» аутентифицирован.Затем в своем коде Razor вы можете просто проверить это условие и затем удалить ссылки для неавторизованных пользователей, а на контроллерах вы можете добавить атрибут «Авторизовать», чтобы внутренний код также проверял аутентифицированных пользователей на наличие соответствующих функций.Например: В коде Razor вы можете включить условные ссылки для редактирования / удаления и т. д., например:

@if(User.Identity.IsAuthenticated) 
{
    //Include links for Edit / Delete
}

И вы можете включить сочетание атрибута [Authorize] на соответствующих контроллерах и [AllowAnonymous] на соответствующих методах.

Надеюсь, это поможет.Там нет выхода из базового понимания и работы.

...