【问题标题】:where are Roles stored?角色存储在哪里?
【发布时间】:2023-04-04 17:41:01
【问题描述】:

我刚刚开始涉足 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 只是连接字符串值的另一个任意名称吗?我检查了数据库,角色没有存储在那里。那么角色存储在哪里呢?

这些都是新手问题。提前感谢您的耐心等待

【问题讨论】:

  • 在您的 web.config 中,应该有一个名为 LocalSqlServer 的连接字符串。这就是存放角色数据的地方。

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


【解决方案1】:

为什么会这样?

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

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

在 web.config 中,您会看到一个名为 LocalSqlServer 的连接字符串

角色存储在哪里?

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

【讨论】:

  • 我刚刚检查了我的应用程序。我看到这个文件夹\Web\App_Data 这个文件夹有ASPNETDB.MDF 和aspnetdb_log.LDF。我想就是这样,对吗?
  • 那是数据库是的。
  • 我将把它们部署到我们的 QA 机器上。现在,在本地它工作正常。我将把它们部署到我们的 QA 盒子,希望这也能奏效。我不应该运行 aspnet_regsql.exe ,对吗?
  • 是的,您必须将成员资格表部署到您的 QA 框。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果您在数据库中没有看到成员资格表,您应该将它们添加到那里。有一个特殊的工具,可以帮助做到这一点:

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

    然后按照它的说明进行操作。

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多