Member 11901496 Ответов: 3

Почему @User.IsInRole не работает ?


Привет ,

Я установил Dotconnect PostgreSql, следуя этому руководству https://www.devart.com/dotconnect/postgresql/articles/aspproviders.html#role
Все работает нормально, но когда я вызываю роль администратора из View.cshtml с помощью этой операции : @User.IsInRole("admin") { } , после чего показывает ошибку как "операция не поддерживается".
Но Rolemanager был включен в web.config

Показывая исключение, которое :

Исключение типа 'System.InvalidOperationException' произошло в Devart.Data.PostgreSql.Web.dll но не был обработан в пользовательском коде

Дополнительная информация: операция не поддерживается


Как я могу это исправить ?

Спасибо Вам за ваш ответ!

3 Ответов

Рейтинг:
1

Afzaal Ahmad Zeeshan

Если я ничего не упускаю, то это служба VB, определенная в разделе Майкрософт.На языке VisualBasic.ApplicationServices[^], а не MVC-один. Однако он действительно выполняется именно так, User.IsInRole(string)[^].

Вы можете рассмотреть возможность использования атрибута Authorize и передать ему роль,

[Authorize(Roles="Admin")]
public ActionResult YourAction() {
   // Action logic
}


Это сделало бы трюк для вас и позволило бы администраторам только получать доступ к контенту. Обратите внимание, что он применяется не к блоку содержимого, а к самому действию. И, подумав еще раз, вы можете обратиться к разработчикам этого фреймворка за рекомендациями по использованию этой функции в приложении. У них было бы решение этой проблемы, так как почему эта функция выбрасывает исключение.

В противном случае вы также можете использовать объект Roles и получить результат для пользователя,

if(Roles.IsUserInRole("username", "role-name")) {
   // Content here
}


Этот подход прост, потому что он может быть применен к блоку содержимого, а не ко всему действию. Подробнее о компании читайте здесь Roles.IsUserInRole(string, string)[^] на MSDN.


Рейтинг:
0

Member 11901496

Привет Afzaal!

я попробовал это в своем проекте, но также показал исключение, что он не поддерживается:(

if(Roles.IsUserInRole("username", "role-name")) {
   // Content here
}


Afzaal Ahmad Zeeshan

Затем рассмотрите возможность использования атрибута в вашем приложении. Если это все еще происходит, то вам придется подумать о том, чтобы написать это разработчику библиотеки. Они дадут вам знать, почему вы получаете исключение.

Рейтинг:
0

Ashok Borate

Пожалуйста, проверьте, инициализируете ли вы поставщика удостоверений с помощью роли

services.AddIdentity<IdentityUser,IdentityRole>()
            .AddEntityFrameworkStores<WebUserContext>()
            .AddDefaultTokenProviders();


Обратите внимание, что AddDefaultIdentity принимает только IdentityUser и, следовательно, не заполняет роли.

services.AddDefaultIdentity<IdentityUser>()
            .AddEntityFrameworkStores<WebUserContext>()
            .AddDefaultTokenProviders();


Dave Kreskowiak

Я серьезно сомневаюсь, что ОП все еще борется с этим, три года спустя.