3

特定のユーザーのみを許可し、ユーザーが認証されていない場合はリダイレクトするように、以前に c# asp.net webforms でメンバー フォルダーを設定しました。私はこれが可能かどうか疑問に思っています/セッション変数が存在する(値が入力されている)天気に基づいて認証を実装する方法、またはセッションがnullの場合は認証しない方法.

フォルダー全体の we.config でアクセス許可を設定する方法と同様に、このようなことが可能になることを望んでいました。

4

1 に答える 1

2

標準のasp.net機能を使用して実行できます。私はそれに対する1つの可能な解決策をアドバイスしようとします. まず、「Web フォーム認証」ASP.NET Authenticationをセットアップする必要があります。web.config を変更する必要があります。

<system.web>
   <authentication mode="Forms">
      <forms name="Custom" loginUrl="/login.aspx" />       
   </authentication>
</system.web>

次に、web.config とASP.NET Authorizationでメンバーの場所を指定する必要があります。

<location path="folders/memberN">
   <system.web>
      <authorization>
         <allow roles="memberN"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</location>

これにより、グループ「memberN」のすべてのユーザーが「folders/memberN」パスの下で作業できるようになります。

次に、メンバーシップロール プロバイダーを web.config に追加する必要があります。メンバーシップとロール プロバイダーは、SQL サーバー プロバイダーに基づいて構成されます。

<configuration>
    <connectionStrings>
        <add name="SqlServices" 
             connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial 
             Catalog=aspnetdb;" />
    </connectionStrings>
    <system.web>
        <roleManager defaultProvider="SqlProvider" 
          enabled="true"
          cacheRolesInCookie="true"
          cookieName=".ASPROLES"
          cookieTimeout="30"
          cookiePath="/">
          <providers>
            <add
              name="SqlProvider"
              type="System.Web.Security.SqlRoleProvider"
              connectionStringName="SqlServices" 
              applicationName="SampleApplication" />
          </providers>
        </roleManager>
        <membership 
             defaultProvider="SqlProvider"
             userIsOnlineTimeWindow="20">
             <providers>
                <remove name="AspNetSqlProvider" />
                <add name="SqlProvider"
                    type="System.Web.Security.SqlMembershipProvider"
                    connectionStringName="SqlServices"
                    applicationName="/" />
            </providers>
        </membership>
    </system.web>
</configuration>

最後に、データベースに特別なテーブルを作成する必要があります (詳細)。

%WINDOWS%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe -S <server> -E -d <database> -A all
于 2012-08-02T17:47:35.850 に答える