1

ボトムラインアップフロント

aspnet_Applications テーブルで指定された各アプリケーションへのユーザー マッピングごとに、aspnet_Users に複数のユーザー レコードが表示されますか?

状況

ASP.NET フォーム セキュリティを使用する Web アプリケーションがあります。多数のユーザーを作成したので、プロバイダーとして指定されている AspApplicationServices データベースを調べることにしました。aspnet_Applications テーブルには、それぞれ固有のアプリケーション ID を持つ 2 つのアプリケーション レコード ("/" と "/MyAppNameHere") があります。

aspnet_Users テーブルに、予想の 2 倍のユーザーがいることに気付きました。両方のアプリケーションに 1 つずつ (つまり、各ユーザーは、"/" および "/MyAppNameHere" アプリケーション レコードの ID を指定するレコードを持っています)。

これはそれが機能するはずの方法ですか?私はこの活動について調べましたが、それが意図的なものなのか、それが何のためにあるのかについての言及は見つかりませんでした. 設計によるものである場合、ユーザー情報の変更は、「ルート」やその他だけでなく、一致するすべてのユーザー記録に伝播されると結論付けなければなりません。

注: これらのユーザーは、アプリケーション (Membership.Create() を使用) と構成ミニアプリ (Security->Create User) の両方で作成されました。

web.config

<roleManager enabled="true">
  <providers>
    <clear />
    <add applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices"  />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
4

3 に答える 3

1

You're most likely adding a user with a role, without having the out-of-box RoleProvider properly configured.

If you don't specify an ApplicationName in the roleManager section of the web.config it will create another user with the default application name "/" when you try and create a user.

<system.web>
    <roleManager enabled="true">
        <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider"
                 connectionStringName="[ConnectionStringName]"
                 applicationName="[ApplicationName]"
                 type="System.Web.Security.SqlRoleProvider" />
        </providers>
    </roleManager>
</system.web>
于 2012-12-26T19:55:47.467 に答える
0

asawyer がコメント付きの回答を投稿するまで、私は自分で回答をマークします。

複数のレコードがアプリケーション固有のユーザーを結び付けているようです。おそらくアプリケーション間の継続性を提供するために、作成された一般的なレコードと、作成されたアプリケーション関連のレコードがあります。

于 2012-07-18T18:34:27.487 に答える