Я создаю приложение asp.net mvc, которое имеет концепцию пользователей. Каждый пользователь может редактировать свой профиль. Например:
Ничего особенно захватывающего там нет ...
Однако у меня возникли некоторые проблемы со схемой авторизации. Сейчас в системе только две роли: «Администратор» и «DefaultUser», но в будущем их, вероятно, будет больше.
Я не могу использовать обычный атрибут Authorize для указания Авторизации, поскольку оба пользователя находятся в одной роли (т. Е. "DefaultUser").
Итак, если я укажу фильтр авторизации следующим образом:
[Authorize(Roles = "DefaultUser")]
тогда эффекта нет. PersonID = 1 может войти и отредактировать свой собственный профиль (как они должны), но они также могут просто изменить URL-адрес на http://localhost/person/edit/2, и у них также есть полный доступ для редактирования профиля PersonID = 2 (который они не должны быть в состоянии сделать).
Значит ли это, что мне нужно создать собственный фильтр авторизации, который проверяет, принадлежит ли ему запрашиваемое действие, прежде чем разрешить ему доступ? То есть, если текущее вошедшее в систему лицо запрашивает действие редактирования с параметром = 1, нужно ли выполнять пользовательскую проверку, чтобы убедиться, что в данный момент зарегистрированное лицо имеет значение PersonID = 1, и, если это так, авторизовать их? и если нет, запретить доступ?
Чувствуется, что я упускаю что-то очевидное здесь, поэтому любые указания будут оценены.