2014-06-25 2 views
2

У меня есть веб-сайт MVC с проверкой подлинности с помощью форм.ASP.NET MVC Не удается найти пользователя

В принципе, вот код, который имеет ошибку, которая говорит, что нет такого пользователя «2010108703», но до сих пор, он вошел в (мы можем видеть, что есть значение в Пользователь.Идентичность.Имя)

string user = User.Identity.Name; 
      Roles.AddUserToRole(user, "student"); 
      return View(); 

Вот мой web.config

<roleManager enabled ="true" defaultProvider="DefaultRoleProvider"> 
     <providers> 
     <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 
     </providers> 
</roleManager> 

так, как вы можете видеть, мы имеем значение для текущего пользователя, который является "2010108703"

enter image description here

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

enter image description here

Является ли это ошибка? Почему это так?

Благодаря

+0

вы попробуйте очистить куки браузера? – SoftSan

+0

да softsan я пробовал ничего не менял – WantIt

ответ

1

FormsAuthentication отдельная система от членства/Роли. Вы можете поместить все, что захотите, в файл cookie и войти в систему, что не означает, что они существуют в вашей базе данных.

Вам необходимо проверить свой код входа, чтобы убедиться, что он фактически проверяет пользователя на основе базы данных членства и что как членство, так и роли используют одну и ту же строку соединения.

0

Я просто принимаю дикие предположения.

С момента создания нового ASP.Net MVC, скорее всего, он поставляется с ASP.Net Identity вместо устаревшего провайдера членства ASP.Net. FYI: Посмотрите на таблицы базы данных.

Если да, User.Identity Объект IPrincipal по-прежнему доступен в ASP.Net Identity.

Однако Roles объект больше не доступен. Вместо этого вам нужно вызвать объект UserManager.

Например,

var roleResult = await UserManager.AddUserToRolesAsync(user, new []{"student"});

Смежные вопросы