ASP.NET LoginView Путаница - PullRequest
       27

ASP.NET LoginView Путаница

0 голосов
/ 26 января 2012

У нас есть веб-страница, созданная в Visual Studio 2008 бывшим сотрудником, которая позволяет посетителям входить в систему.

Недавно один из наших специалистов по маркетингу прошел курс веб-дизайна. Во время урока этот человек создал симпатичный веб-сайт в рамках проекта класса для Visual Studio 2010 .

Теперь мне пришлось заставить его работать, и я не знаю, как работал существующий веб-сайт. У меня есть оба варианта Visual Studio , так что это не проблема.

Сейчас я пытаюсь выяснить, как наш предыдущий веб-дизайнер реализовал элемент управления LoginView .

Каким-то образом записи в файле Web.config влияют на направление элемента управления LoginView для проверки подлинности учетных записей.

Чтобы сохранить код как short и " to the ", насколько это возможно, я вырежу столько, сколько смогу, что не выглядит необходимым.

Наш 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.config, которые я не совсем понимаю, и я не хочу нести ответственность за его нарушение.

Нужно ли создавать новый PublicKeyToken, если я изменю applicationName?

На главной странице EXISTING процедура входа в систему содержится в теге 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>

Эта новая версия имеет несколько различных полей. Я реализую их или это элементы управления по умолчанию, которые используются, когда пользовательский логин не используется?

1 Ответ

1 голос
/ 26 января 2012

Вам было поручено заменить существующий сайт (asp.net 3.5) на новый (asp.net 4.0 - возможно).

К сожалению, это легче сказать, чем сделать . Предполагая, что новое приложение не сильно отделено, вам придется провести некоторый рефакторинг, чтобы он заработал. Объем рефакторинга зависит, между прочим, от того, как разработчик для нового сайта реализовал доступ к данным.

Что вы должны сделать:

На этом этапе вам следует сосредоточиться на том, чтобы указать новое приложение на сервере, где хранятся ваши участники и профильные поставщики, а затем на аутентификации.

Когда вы пройдете через это, вы проведете какое-то старое доброе интеграционное тестирование на своем устройстве, чтобы выявить проблемы и начать их устранять.

Ответы на ваши вопросы:

Итак, я могу скопировать эту информацию из файла Web.config непосредственно в новый проект?

Я бы не рекомендовал это. Очень аккуратно скопируйте каждый элемент из оригинала в новый. В первую очередь вас должны интересовать элементы провайдера connectionStrings, authentication, membership и profile. Это те, которые вы хотите портировать со старого на новое. Хотя могут быть и другие - начните с них.

Нужно ли создавать новый PublicKeyToken, если я изменю имя приложения?

Не меняйте applicationName. Ваш членский поставщик использует это в базе данных. Если вы измените его в файле конфигурации, то вам нужно будет изменить его в БД.

Я не уверен, что такое ValidationGroup = "ctl00 $ Login1" или могу ли я использовать это в новой версии.

Не беспокойтесь об этом прямо сейчас, просто используйте реализацию нового приложения (так как это так здорово!).

Эта новая версия имеет несколько различных полей. Я реализую их или это элементы управления по умолчанию, которые используются, когда пользовательский логин не используется?

Элементы управления Login в более новой версии отображают имя пользователя и его статус после входа в систему. Элементы управления Login имеют шаблоны для отображения различных макетов для анонимных пользователей (тех, кто не вошел в систему) и вошедших в систему пользователей. Похоже, у них есть два набора, указывающие на одну и ту же страницу. Возможно, на сервере выполняется какой-то другой код в зависимости от того, какая ссылка Manage Profile нажата.

Просто оставьте их на месте.

Ссылки из этого поста могут помочь вам разобраться с некоторыми из этих вещей.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...