我已经使用表单身份验证设置了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;
但是当我们尝试添加角色时,它说,没有这样的用户存在。
这是一个错误吗?为什么会这样?
由于
答案 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"});