在过去的两天里,我经历了一场小小的战斗,虽然我已经解决了它,但这并不是我所期望的那样。
Visual上的ASP.NET 4.5。
如果您创建了一个新项目,并第一次启动它,并注册,一切都很好。
它创建一个名为AspNetUsers的表,并将您放在该表中。
它还创建其他表(包括--但不限于)-- AspNetRoles --存储角色-- AspNetUserRoles --将用户存储在角色中。
因此,我首先使用数据库为所有三个表创建模型和控制器,这样我就可以通过一个接口来管理它们(我知道曾经有一些内置于VS2010的东西,但它似乎已经消失了-当我学习如何首先做DB时,不用担心)
问题是,当我将用户添加到角色时,数据显示在我的数据库中,但是当我试图使用装饰器锁定控制器方法时:
[Authorize(Roles="admin")]
public string test()
{
return "hello";
} 一切都开始变成梨形了。
因此,我测试了User.IsInRole(“管理员”),令我失望的是,它返回假!
因此,我开始了web.config的旅程(这告诉角色管理器指向我的DefaultConnection (我正在使用它)。
<roleManager enabled="true" defaultProvider="SqlRoleManager">
<providers>
<add name="SqlRoleManager"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="DefaultConnection"
applicationName="ConferenceOrg" />
</providers>
</roleManager>然后,在我使用的代码中:
string role = "admin";
if (!Roles.RoleExists(role))
{
Roles.CreateRole(role);
}
else
{
string[] usrs = { User.Identity.Name };
if (!User.IsInRole(role))
{
Roles.AddUsersToRole(usrs, role);
}
}最初,这是因为存储过程不存在而不起作用。因此,我转到C:\Program (x86) \MicrosoftVisualStudio12.0\Common7\ Tools \快捷方式,启动了本机工具Cmd提示符(X86),并使用它添加存储过程等。
现在,上面的代码可以工作了,但是除了原始的集合之外,它还创建了大量的表。

代码在新的aspnet_roles表中创建角色,现在它在AspNetUsers和aspnet_users中创建我的用户。
所以我的下一步是先删除我用数据库创建的表,然后为aspnet_表重做它.
不高兴,但会成功的。对我的处境有什么想法吗?
我做得对吗?
发布于 2014-12-24 17:32:25
您的项目与传统SQL成员资格提供程序和New ASP.Net Identity混合使用。
您只需要一个成员,即新ASP.Net恒等式。
在ASP.Net标识中,您不需要在web.config中配置任何设置(owin的AppStartup除外)。
如何解决这个问题
现在你的数据库一团糟。由于您的应用程序是新的,并且没有现有的用户,所以很容易重新创建一个新的应用程序和新的数据库,然后重新开始。
然后确保将用户和角色都分配给AspNetUserRoles表。
https://stackoverflow.com/questions/27636089
复制相似问题