2012-01-26 5 views
0

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

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

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

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

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

В Генеральной странице СУЩЕСТВУЮЩИХ, рутина Логина содержится внутри 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> 

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

+0

Существуют ли новые функции, которые прототип обеспечивает, что исходное приложение не поддерживает? Помогло бы узнать, требуется ли даже переносить приложение на 4.0 (Visual Studio 2010 - по умолчанию asp.net framework). – Rich

+0

Мне сказали сделать работу по маркетингу, а затем передать ее им, чтобы они могли поддерживать ее или делать какие-либо изменения, которые они хотят сделать. Итак, я думаю, он должен остаться в формате VS2010. Сценарии входа в систему контролируются отделом ИТ/ИТ, поэтому старая логика должна оставаться. Отвечал ли я на ваш вопрос? – jp2code

+0

Не совсем, но это нормально. Позвольте мне ответить на ваши вопросы и посмотреть, могу ли я предоставить некоторую дополнительную информацию. – Rich

ответ

1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+0

Привет, Rich, это может быть ответ, но я не полностью работал в Microsoft Walkthrough. Если вы все проведете в своем Пошаговом руководстве, я расскажу, как подключить элемент 'LoginView' к тому, что необходимо в файле' Web.config', чтобы заставить его работать, тогда я отмечу это как ответ. Тем временем меня тянули к другому проекту. Это может занять несколько дней или неделю, но я всегда отмечаю ответ на свои вопросы. – jp2code

+0

Да, я думаю, это то, что я хотел. Тем не менее, большая часть работы вносит изменения. – jp2code