角色存储在哪里?

时间:2013-08-13 15:19:17

标签: asp.net security authentication asp.net-mvc-4 roleprovider

我刚刚开始涉足ASP.NET安全性。有几个问题。 1)我使用角色管理来限制对某个页面的访问。这是我的web.config

部分
<profile>
    <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" 
            type="System.Web.Profile.SqlProfileProvider, 
            System.Web, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=b03f5f7f11d50a3a" 
            connectionStringName="LocalSqlServer" applicationName="/" />
    </providers>
</profile>
<roleManager enabled="true">
    <providers>
        <clear />
        <add connectionStringName="LocalSqlServer" 
            applicationName="/" name="AspNetSqlRoleProvider" 
            type="System.Web.Security.SqlRoleProvider, System.Web, 
            Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider" 
            type="System.Web.Security.WindowsTokenRoleProvider, 
            System.Web, Version=2.0.0.0, 
            Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </providers>
</roleManager>

这很好用。但是之前发生的事情是connecitonStringName被设置为“ApplicationServices”。它不会起作用。然后我将其更改为“LocalSqlServer”。它开始运作了。

所以我想明白,为什么会发生这种情况?另外,LocalSqlServer只是连接字符串值的另一个任意名称吗?我检查了数据库,角色没有存储在那里。那么存储的角色在哪里呢?

这些是新手问题。我提前感谢你的耐心

3 个答案:

答案 0 :(得分:0)

因为当您声明AspNetSqlProfileProvider时,指定connectionStringName="LocalSqlServer"告诉它使用哪个连接。

答案 1 :(得分:0)

  

为什么会这样?

使用错误的连接字符串意味着您的应用程序无法找到成员资格和角色表。

  

LocalSqlServer是连接的另一个任意名称   字符串值?

在web.config中,您将看到名为LocalSqlServer

的连接字符串
  

存储角色在哪里?

如果它是旧的成员资格框架,请查看aspnet_Roles表,如果是较新的SimpleMembershipProvider,请查看UserProfile

答案 2 :(得分:0)

如果您没有在数据库中看到成员资格表,则应将其添加到那里。有一个特殊的工具,它有助于实现它:

在VisualStudio命令行中运行以下命令:aspnet_regsql 或者在此处找到它:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe.

并按照其说明进行操作。