Использование Идентичность 2.0, я модифицировал использовать целое число в качестве первичного ключа следующие http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identityIdentity 2.0 с целыми ключами: почему User.IsInRole всегда возвращает false?
Он прекрасно работает, за исключением, когда от контроллера, звоню:
User.IsUserInRole("admin");
Он всегда возвращает ложь. Я проверил базовую таблицу и данные в порядке.
Однако, если я:
var t = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
bool ok = t.IsInRole(User.Identity.GetUserId<int>(), "admin");
то он работает отлично. Похоже, что проблема только в Controller.User
Кроме того, атрибуты не работают, например [Authorize(Roles = "admin")]
Кто-то была такая же проблема?
UPDATE:
Это ничего связано с контроллером, Thread.CurrentPrincipal
не имеет ту же проблему:
Thread.CurrentPrincipal.IsInRole("admin");
UPDATE 2:
кажется, что проблема заключается в таблице AspNetUserRoles. Identity добавила новый столбец, внешний ключ к моей расширенной пользовательской таблице. Мне кажется излишним, потому что есть столбец UserId. Проблема в том, что все значения этого столбца NULL. Я думаю, что если я смогу понять, как перенаправить на UserId, все будет работать нормально.
[Авторизовать (Roles = "admin")] и User.IsInRole проверить файл cookie, который был создан во время входа в систему. Должно быть что-то не так, как вы установили cookie cookie, который не включал информацию о роли пользователя. – DSR
DSR, однако следующий код работает нормально: var t = HttpContext.GetOwinContext(). GetUserManager(); bool ok = t.IsInRole (User.Identity.GetUserId (), "admin"); –
Да, это правильно, потому что вы напрямую обращаетесь к базе данных с помощью этого кода. [Authorize (Roles = "admin")] и User.IsInRole не получают доступ к базе данных, а не получают информацию из файла cookie проверки подлинности. Отправьте свой стартовый код owin, где вы настроите файлы cookie для проверки подлинности. Следуйте этим видеоурокам http://stackoverflow.com/questions/25857806/extending-identityuserrole-in-identity-2-0/25857923#25857923 – DSR