4

由 Visual Studio 2012 中的默认(互联网)模板创建的 MVC 4 应用程序在运行“身份和访问...”向导后返回 RolePrincipal。

该向导创建与 STS(实际或“开发”时间 STS)的信任关系。

如果检查,用户对象将是RolePrincipal类型。这样做的结果是 User.IsInRole 针对本地角色数据库而不是声明集进行解析。

在此处输入图像描述

我期待一个ClaimsPrincipal

4

1 回答 1

5

这是因为新的 Oauth 支持。它使用了新的 simplemembership,它最终使用了所有的提供者。

删除[InitializeSimpleMembership]帐户控制器上的属性是不够的,因为初始化发生在WebMatrix.WebData程序集中:

[assembly: PreApplicationStartMethod(typeof (PreApplicationStartCode), "Start")]

PreApplicationStartCode.Start最终调用:

WebSecurity.PreAppStartInit();

如果检查,则表明:

     ...
SimpleRoleProvider simpleRoleProvider = WebSecurity.CreateDefaultSimpleRoleProvider("AspNetSqlRoleProvider", currentDefault2);
      Roles.Providers.Remove("AspNetSqlRoleProvider");
      Roles.Providers.Add((ProviderBase) simpleRoleProvider);
...

禁用所有这些“魔法”的方法是使用 web.config 中的此设置:

<add key="enableSimpleMembership" value="false"/>
于 2012-11-20T01:50:36.950 回答