#.net #asp.net-core #authorization
#.net #asp.net-core #авторизация
Вопрос:
Я создаю простое приложение для социальной сети. Я использую .СЕТЕВОЕ ядро 2.0 и идентификация для работы с пользователями. У меня есть ролевая аутентификация как для представления, так и для контроллера. У меня следующая проблема: у каждого пользователя есть страница профиля, и пользователь может загрузить картинку (аватар). Однако я могу пойти и загрузить фотографии для других пользователей, зайдя в их профиль. Я сделал авторизацию CRUD для модели профиля, поэтому, если вы не являетесь владельцем этой записи, вы не можете ее редактировать, однако я все еще вижу форму загрузки изображения. Могу ли я скрыть это каким-то образом на основе аутентифицированного пользователя и URL профиля?
Комментарии:
1. Ваш вопрос очень неясен, но в целом, я думаю, вы ищете это: learn.microsoft.com/en-us/aspnet/core/security/authorization /…
2. Я бы дал больше информации, если это необходимо. Что касается авторизации на основе ресурсов, я думаю, это ресурс? это тег формы. Я больше думал о каком-то операторе If, который проверяет, находится ли пользователь в своем собственном профиле. Я знаю, что вы можете сказать
@if ((await AuthorizationService.AuthorizeAsync(User, "PolicyName")).Succeeded)
, но у многих пользователей может быть одинаковая политика. Мой вопрос: есть ли способ фильтровать элементы HTML на основе идентификатора пользователя. Если ключом является аутентификация на основе ресурсов, пожалуйста, помогите мне понять, как форма является ресурсом?3. Как насчет сравнения текущего идентификатора пользователя и идентификатора пользователя профиля (предположим, у вас есть идентификатор пользователя в URL профиля) в вашем действии, затем передайте результат для просмотра с помощью
@if(@ViewBag.result)
4. Спасибо за предложение Xing. Я вроде как сделал то же самое. В контроллере, который принимает идентификатор атрибута, проверяет текущий идентификатор пользователя и идентификатор из профиля, который он возвращает. Затем я назначаю элемент viewbag, который сообщает мне, тот ли это пользователь. Я не уверен, что это на 100% лучший способ сделать это, но это работает 🙂 Спасибо вам всем.