В настоящее время я создаю приложение ASP.NET MVC и хочу использовать атрибут authorize с ролями, не используя поставщика по умолчанию и все его таблицы, которые автоматически создаются.
Я решил создать свой собственный поставщик ролей (мой класс наследуется от RoleProvider) и реализовать только один метод:
public override string[] GetRolesForUser(string username)
{
Account account = accountRepository.FindByUserName(username);
string[] role = new string[] { account.Role };
return role;
}
Мой контроллер выглядит так:
[Authorize(Roles = "Administrator")]
public ActionResult Index()
{
return View();
}
Я использую Unity для добавления хранилища в мой класс провайдера пользовательских ролей, который прекрасно работает, но когда вызывается FindByUserName (имя пользователя), я получаю следующую ошибку:
Невозможно получить доступ к удаленному объекту. Имя объекта: 'DataContext, доступ к которому осуществляется после удаления.'.
По какой-то причине Linq2Sql не нравится то, что происходит, и я немного растерялся. Любое понимание было бы чрезвычайно полезно. Кроме того, если кому-то удалось сделать то, что я пытаюсь сделать, без использования какого-либо поставщика ролей, пожалуйста, дайте мне знать. В таблице учетных записей в моей базе данных есть столбец role (int), а в моем коде есть перечисление с моими ролями.
Спасибо