ASP.NET MVC无法找到用户

时间:2014-06-25 04:19:49

标签: asp.net-mvc

我已经使用表单身份验证设置了MVC网站。

基本上,这里的代码有错误,表示没有这样的用户' 2010108703'但是,它仍然登录(我们可以看到User.Identity.Name上有一个值)

 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>

如您所见,我们为当前用户提供了一个值,即&#34; 2010108703&#34;

enter image description here

但是当我们尝试添加角色时,它说,没有这样的用户存在。

enter image description here

这是一个错误吗?为什么会这样?

由于

2 个答案:

答案 0 :(得分:1)

FormsAuthentication是一个与Membership / Roles不同的系统。您可以在cookie中放置任何内容并让用户登录,这并不意味着它们存在于您的数据库中。

您需要检查您的登录代码,以确保它实际上是根据成员资格数据库验证用户,并且成员资格和角色都使用相同的连接字符串。

答案 1 :(得分:0)

我只是疯狂猜测。

由于您创建了一个新的ASP.Net MVC,因此很可能它带有ASP.Net Identity而不是传统的ASP.Net成员资格提供程序。 仅供参考 :查看数据库表。

如果是这样,User.Identity IPrincipal对象在ASP.Net Identity中仍然可用。

但是,Roles对象不再可用。相反,您需要调用UserManager对象。

例如,

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