2015-04-23 5 views
0

В моем Index.cshtml Я проверяю RoleUser.MVC5/EF6 RoleManager

@if (Roles.IsUserInRole("Admin") || Roles.IsUserInRole("Standard")) 
{ 
} 

Когда я загружаю Index.cshtml в моем браузере, я получаю эту ошибку:

An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code 

Additional information: Unable to connect to SQL Server database. 

Я прочитал несколько решений, которые не работают для меня:

  • Удалить RoleManager в web.config.
  • Использование [InitializeSimpleMembership] (не будет работать, из-за MVC5 с использованием идентичности)
  • добавить provider к system.web.roleManager в web.config.

Все эти вещи для меня не сработали. Я действительно хочу использовать аутентификацию/авторизацию в MVC5/EF6. Мне нужны инструкции для MVC5/EF6/Identity, так как большинство людей отвечают за MemberShip или что-то еще.

+2

Что произойдет, если вы используете 'User.IsInRole («...»)' – Tobias

+0

Эй, это работает просто замечательно! Не могли бы вы рассказать об этом решении, пожалуйста? – jbehrens94

+0

К сожалению, при входе в систему это не работает. Я снова получаю ту же ошибку. – jbehrens94

ответ

2

Класс Roles, который вы используете, является остатком от старых дней членства, рамки auth, которая теперь заменена идентификатором ASP.NET. Чтобы выполнить проверку ролей, вы должны сделать это через свойство User, IPrincipal, заполненное промежуточным программным обеспечением аутентификации OWIN. Ваш код будет в конечном итоге выглядит как:

@if (User.IsInRole("Admin") || User.IsInRole("Standard")) 
{ 
    .... 
} 
Смежные вопросы