【问题标题】:how can i use rolemanagement without the use of ASPNETDB.MDF - asp.net/c#我如何在不使用 ASPNETDB.MDF 的情况下使用角色管理 - asp.net/c#
【发布时间】:2012-11-08 06:58:09
【问题描述】:

我想使用角色管理asp.net,但是Visual Studio一直在创建ASPNETDB.MDF文件,我不需要这个。我已经有一个现有的数据库文件,我想用它来代替ASPNETDB.MDF。这主要是为了拒绝不需要的用户列出不必要的目录。

提前致谢。

【问题讨论】:

    标签: c# asp.net sql roles


    【解决方案1】:

    您可以摆脱 ASPNETDB.MDF - 一个无关的附加数据库文件,并且可以将您的所有安全信息(用户、角色)存储在您的自定义 SQL 数据库中。

    按照这些简单的步骤进行

    步骤 01 - 在 SQL 数据库中创建安全表

    首先,您需要创建在 SQL 数据库中保存 ASP.NET 安全信息的表。为此有一个向导。

    ASP.NET SQL Server 安装向导位于(Windows XP 和 Windows 2008 Server):

    %WinDir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe

    ASP.NET SQL Server 安装向导位于(Windows 7 x64)其中之一:

    %WinDir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe %WinDir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe %WinDir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regsql.exe %WinDir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe

    这个自助向导非常简单。您选择您的 SQL Server(通常是 .\SQLExpress)和所需的数据库,向导将创建所有必需的表和对象来处理您的自定义 SQL 数据库中的 ASP.NET 安全性。

    步骤 02 - 生成机器密钥

    安全表中的密码存储加密。您需要在 web.config 文件中生成并记录您唯一的机器密钥。

    访问http://aspnetresources.com/tools/machineKey 并获得一个现成的唯一机器密钥,该密钥被整齐地包装在几行代码中,为您的 web.config 做好准备。生成行并将它们放在 XML 元素中:

    ... <machineKey
          validationKey="6B6DC7FF0657AEE33FEB36189072D99551F27E281EAEEC8B0516B188A85CF2E4C
                         4A988429765C625979A232B5BE78D6E52CB59C3675B44FCA032C24B2C49DC5"
          decryptionKey="CFED70360D049F182EA009258C34ED698A799774A2687AAE94098C71C6BF38C8"
          validation="SHA1"
          decryption="AES" />
    </system.web>
    

    Step03 - 修改您的 web.config

    修改您的 web.config 以包括成员资格、角色和个人资料提供者。

    在 XML 元素中放置类似于下面这些行的代码。将单词“Your”替换为符合您的命名约定的适当名称。

    ...

    <membership defaultProvider="YourMembershipProvider">
      <providers>
        <add connectionStringName="YourConnectionString" applicationName="/"
           enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false"
           requiresUniqueEmail="true" passwordFormat="Encrypted"     maxInvalidPasswordAttempts="5"
           passwordAttemptWindow="10" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"
           name="YourMembershipProvider" type="System.Web.Security.SqlMembershipProvider" />
      </providers>
    </membership>
    
    <roleManager enabled="true" cacheRolesInCookie="true" cookieName="YOUR_ROLES" defaultProvider="YourRoleProvider">
      <providers>
        <add connectionStringName="YourConnectionString" applicationName="/" name="YourRoleProvider"
          type="System.Web.Security.SqlRoleProvider" />
       </providers>
     </roleManager>
    
     <profile defaultProvider="YourProfileProvider">
        <providers>
           <add name="YourProfileProvider" connectionStringName="YourConnectionString"
          applicationName="/" type="System.Web.Profile.SqlProfileProvider" />
         </providers>
     </profile>
    

    现在您可以在 Web Developer 或 Visual Studio 中运行 ASP.NET 配置,并确保所有新用户都在您的自定义数据库中创建,而不是在 /App_Data/ASPNETDB.MDF 中

    【讨论】:

    • 您好,我在使用 aspnet_regsql.exe 定位我的数据库时遇到了困难,当我尝试浏览它时收到以下错误消息,“无法从 sql 中查询数据库名称列表服务器网络相关或实例............”任何想法如何解决这个问题?
    • 你在哪里寻找数据库名称或者你在服务器名称中输入什么。
    • 您在哪里寻找数据库名称?或者您在服务器名称中输入了什么?
    • 这就是问题所在,当我在 asp.net sql server 设置向导中打开数据库下拉列表框时,我收到该错误消息。我看不到任何数据库,但我知道我有一个 .mdf 格式的数据库。
    • 嘿,经过一番折腾终于搞定了,谢谢你的建议。
    猜你喜欢
    • 2011-11-10
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2015-01-04
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多