0

Visual Studio 2008で、訪問者がログインできる元従業員によって作成されたWebページがあります。

最近、私たちのマーケティング担当者の1人がWebデザインのクラスを受講しました。授業中に、この人物はVisualStudio2010の授業プロジェクトの一環として美しいWebサイトを作成まし

今ではそれを機能させるために私にダンプされました、そして私は既存のウェブサイトがどのように機能したかわかりません。私はVisualStudioの両方のフレーバーを持っているので、それは問題ではありません。

今、私は以前のWebデザイナーがLoginViewコントロールをどのように実装したかを調べようとしています。

どういうわけか、ファイル内のエントリは、コントロールがアカウントを認証するWeb.config場所に影響を与えます。LoginView

コードをできるだけ短く、「要点」に保つために、必要と思われない限り、できる限り切り抜いていきます。

私たちのWeb.configファイルには次のエントリがあります:

<configuration>
  <system.web>
    <membership defaultProvider="CustomizedProvider">
      <providers>
        <clear/>
          <add name="CustomizedProvider" type="System.Web.Security.SqlMembershipProvider" requiresUniqueEmail="false" connectionStringName="SqlASPNETDB" applicationName="JP2CODE" enablePasswordRetrieval="True" enablePasswordReset="True" passwordFormat="Clear" requiresQuestionAndAnswer="False" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0"/>
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="ProfileProvider" applicationName="JP2CODE" connectionStringName="SqlASPNETDB" type="System.Web.Profile.SqlProfileProvider"/>
      </providers>
    </profile>
    <roleManager enabled="true" defaultProvider="CustomRoleProvider">
      <providers>
        <clear/>
        <add connectionStringName="SqlASPNETDB" applicationName="JP2CODE" name="CustomRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </providers>
    </roleManager>
    <webParts>
      <personalization defaultProvider="SqlPersonalizationProvider">
        <providers>
          <add name="SqlPersonalizationProvider" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="SqlASPNETDB" applicationName="JP2CODE"/>
        </providers>
        <authorization>
          <allow verbs="enterSharedScope" users="test,?"/>
        </authorization>
      </personalization>
    </webParts>
  </system.web>
</configuration>

注:applicationNameセキュリティ情報を無意識のうちに提供しないように、フィールドを変更しました。

Web.configでは、このファイル情報を新しいプロジェクトに直接コピーしますか?私たちのマーケティング担当者のWebプロジェクトにはWeb.config、私が本当に理解していない多くのカスタムエントリがファイルにあり、私はそれを破る責任を負いたくありません。

PublicKeyToken変更した場合、新しいものを作成する必要がありますapplicationNameか?

EXISTING Masterページでは、ログインルーチンはタグ内に含まれていますasp:Login

<asp:Login ID="Login1" BackColor="#e7e0c5" Width="170px" VisibleWhenLoggedIn="False"
    runat="server" FailureText='Invalid UserName/Password.'>
  <LayoutTemplate>
    <div style="width:181px;">
      <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Login ID:</asp:Label>&nbsp;
      <asp:TextBox ID="UserName" runat="server" Width="150px"></asp:TextBox><br />
      <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="Required<br />" ValidationGroup="ctl00$Login1">*</asp:RequiredFieldValidator>
      <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>&nbsp;
      <asp:TextBox ID="Password" runat="server" TextMode="Password" Width="150px"></asp:TextBox><br />
      <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="Required<br />" ValidationGroup="ctl00$Login1">*</asp:RequiredFieldValidator>
      <asp:CheckBox ID="RememberMe" runat="server" Text="Remember" />&nbsp;
      <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="ctl00$Login1" /><br />
      <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal>
    </div>
  </LayoutTemplate>
</asp:Login>

それが何でValidationGroup="ctl00$Login1"あるか、または新しいバージョンでそれを使用できるかどうかはわかりません。

マーケティングから提供されたPROTOTYPEマスターページでは、ログインルーチンが大きく異なります。それをどのように機能させるか、またはマーケティング担当者が機能しないものを挿入したかどうかはわかりません。それはもう少し広がっています:

<div style="width:181px;">
  <asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome {0}!" />
  <asp:LoginView ID="LoginView2" runat="server">
    <LoggedInTemplate>
      <asp:LinkButton ID="LinkButton1" Font-Underline="true" PostBackUrl="~/ManageProfile.aspx" runat="server">Manage Profile</asp:LinkButton>
    </LoggedInTemplate>
  </asp:LoginView>
      <asp:LoginStatus ID="LoginStatus1" Font-Underline="true"  LoginText=""  LogoutAction="Refresh" runat="server" />
</div>
<h3>Log In</h3>
<asp:LoginView ID="LoginView1" runat="server">
  <AnonymousTemplate>
    <asp:Login ID="Login1" BackColor="#E7E0C5" Width="170px" VisibleWhenLoggedIn="false"
      runat="server" FailureText='Invalid UserName/Password.' >
    </asp:Login>
  </AnonymousTemplate>
  <LoggedInTemplate>
    Welcome <asp:LoginName ID="LoginName1" runat="server" /><br /><br />
    <asp:LoginStatus ID="LoginStatus1" runat="server" /><br />
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/ManageProfile.aspx">Manage Profile</asp:HyperLink>
  </LoggedInTemplate>
</asp:LoginView>

この新しいバージョンには、いくつかの異なるフィールドがあります。それらを実装しますか、それともカスタムログインが使用されないときに使用されるデフォルトのコントロールですか?

4

1 に答える 1

1

あなたは、既存のサイト(asp.net 3.5)を新しいサイト(asp.net 4.0-おそらく)に置き換えるという任務を負っています。

残念ながら、これは簡単に言うことができます。新しいアプリケーションが高度に分離されていないと仮定すると、機能させるためにリファクタリングを行う必要があります。リファクタリングの量は、特に、新しいサイトの開発者がデータアクセスをどのように実装したかによって異なります。

あなたがすべきこと:

この時点で、メンバーシッププロバイダーとプロファイルプロバイダーが保存されているサーバーに新しいアプリケーションを指定してから、認証に集中する必要があります。

それを通過したら、ボックスで古き良き統合テストを実行して問題を特定し、問題の処理を開始します。

あなたの質問への回答:

では、このWeb.configファイル情報を新しいプロジェクトに直接コピーしますか?

私はそれをお勧めしません。非常に注意深く、元の要素から新しい要素に各要素をコピーします。主に関係する必要があるのは、、、およびconnectionStringsプロバイダー要素です。これらは、古いものから新しいものに移植したいものです。しかし、他にもいくつかあるかもしれません-それらから始めてください。authenticationmembershipprofile

applicationNameを変更した場合、新しいPublicKeyTokenを作成する必要がありますか?

applicationNameは変更しないでください。メンバーシッププロバイダーは、データベースでそれを使用します。設定ファイルで変更する場合は、データベースで変更する必要があります。

ValidationGroup = "ctl00 $ Login1"が何であるか、または新しいバージョンでそれを使用できるかどうかはわかりません。

今はこれを気にする必要はありません。新しいアプリケーションの実装を使用してください(とても素晴らしいからです!)。

この新しいバージョンには、いくつかの異なるフィールドがあります。それらを実装しますか、それともカスタムログインが使用されないときに使用されるデフォルトのコントロールですか?

新しいバージョンのログインコントロールには、ログインするとユーザー名とそのステータスが表示されます。ログインコントロールには、匿名ユーザー(ログインしていないユーザー)とログインユーザーに異なるレイアウトをレンダリングするためのテンプレートがあります。同じページを指す2つのセットがあるようです。クリックされた[プロファイルの管理]リンクに応じて、サーバー上でいくつかの異なるコードを実行している可能性があります。

とりあえずそのままにしておきます。

この投稿からのリンクは、このようなもののいくつかを処理するのに役立つ場合があります。

お役に立てれば。

于 2012-01-26T19:46:52.373 に答える