Рассматривали ли вы написать свой собственный атрибут, которым вы можете украсить свое действие?
В этом случае вы можете использовать атрибут, чтобы получить права доступа для пользователя, сопоставить его с, скажем, таблицей доступа к странице, а затем вернуть результат и разрешить или запретить доступ к странице / действию.
Я думаю, вам понадобится таблица, которая будет определять, какие страницы имеют доступ к роли, и на которые можно перекрестно ссылаться на роли, назначенные пользователю.
Или вы можете написать свой атрибут таким образом, чтобы он определял роли, разрешенные для просмотра страницы.
[MyAccessAttribute(Allow="SuperUser", "Admin")]
public ActionResult MyAction()
Это помогает / имеет смысл?