привязка пользователя и пароля - PullRequest
1 голос
/ 22 июля 2011

У меня есть вопрос по поводу контроля входа в систему asp.net.Я определил в своем приложении asp.Login и пароль, а также внес изменения в веб-конфигурацию с информацией, необходимой для установки аутентификации, но я хочу знать, как связать поля пользователя и пароля с базой данных: Iесть сомнения, потому что в документации MSDN написано "If you use the Login control with ASP.NET membership, you do not need to write code to perform authentication.".

Вот код моего взгляда

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/MasterSencillo.master"     AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="MapaPrueba.login" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<table class="tlbLogin">
    <tr>
        <td>
        <asp:Login ID="lgnMapZone" runat="server" DestinationPageUrl="~/Default.aspx" 
                LoginButtonText="Iniciar Sesion" 
                PasswordRequiredErrorMessage="Password requerido." RememberMeText="Recuerdáme" 
                TitleText="Inicio de Session " UserNameLabelText="Usuario:" 
                UserNameRequiredErrorMessage="Nombre de usuario Requerido">
            <LabelStyle CssClass="formatText" />
            <TitleTextStyle CssClass="formatText" />
            </asp:Login>
        </td>
    </tr>
</table>

И мой Web.Config

<appSettings/>
<connectionStrings>
    <add name="MySqlConnection" connectionString="Data Source=.\SqlExpress;Initial Catalog=AtentoMIG;Integrated Security=True" />
</connectionStrings>
<system.web>
    <!-- 
        Set compilation debug="true" to insert debugging 
        symbols into the compiled page. Because this 
        affects performance, set this value to true only 
        during development.
    -->
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
    <!--
        The <authentication> section enables configuration 
        of the security authentication mode used by 
        ASP.NET to identify an incoming user. 
    -->
    <authentication mode="Forms">
        <forms loginUrl="login.aspx" name=".ASPXFORMSAUTH"/>
    </authentication>
    <authorization>
        <deny users="?" />
    </authorization>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
        <providers>
            <clear />
            <add
              name="SqlProvider"
              type="System.Web.Security.SqlMembershipProvider"
              connectionStringName="MySqlConnection"
              applicationName="MyApplication"
              enablePasswordRetrieval="false"
              enablePasswordReset="true"
              requiresQuestionAndAnswer="true"
              requiresUniqueEmail="true"
              passwordFormat="Hashed" />
        </providers>

Ответы [ 6 ]

1 голос
/ 22 июля 2011

Я не совсем уверен, что вы имеете в виду, связывая имя пользователя и пароль. Но в действительности не должно быть необходимости делать какие-либо привязки.

Элементы управления аутентификацией будут работать сразу после установки, при условии, что у вас настроен действительный поставщик членства .

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

По умолчанию SqlMembershipProvider является поставщиком по умолчанию (при условии, что вы не изменили свой файл machine.config). Но у вас есть возможность поменять поставщиков. Поэтому, когда Microsoft говорит, что вам не нужно ничего делать для использования элемента управления, они верны, если вы хотите использовать поставщика членства sql.

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

1 голос
/ 22 июля 2011

Ваш элемент управления Login не имеет кнопки. Вот код, который генерируется при создании новой сети из Visual Studio:

    <asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
    <LayoutTemplate>
        <span class="failureNotification">
            <asp:Literal ID="FailureText" runat="server"></asp:Literal>
        </span>
        <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification" 
             ValidationGroup="LoginUserValidationGroup"/>
        <div class="accountInfo">
            <fieldset class="login">
                <legend>Account Information</legend>
                <p>
                    <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
                    <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
                         CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
                         ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                </p>
                <p>
                    <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                    <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
                         CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required." 
                         ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                </p>
                <p>
                    <asp:CheckBox ID="RememberMe" runat="server"/>
                    <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
                </p>
            </fieldset>
            <p class="submitButton">
                <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
            </p>
        </div>
    </LayoutTemplate>
</asp:Login>

Если членство настроено правильно, установка CommandName кнопки на Login должна связаться с поставщиком членства и вызвать все необходимые методы для проверки пользователя в базе данных.

1 голос
/ 22 июля 2011

Я думаю, вам нужно прочитать эту статью.http://msdn.microsoft.com/en-us/library/44w5aswa.aspx. Это хорошая статья для настройки провайдера членства в SAP.bet.

1 голос
/ 22 июля 2011

Вы должны использовать пользовательское членство провайдера. Посмотрите это видео Создайте пользовательское членство Также статья о проекте кода о Custom Member Ship

1 голос
/ 22 июля 2011

Вам необходимо установить / запустить схему членства asp.net в базе данных, которую вы указали в разделе членства вашего web.config (строка подключения MySqlConnection в вашем случае).

Взгляните на эта статья для пошаговых инструкций.

1 голос
/ 22 июля 2011

ASP.Net имеет встроенную систему аутентификации, которая хранит учетные записи пользователей в таблице aspnet_Users.

Вы можете создать эту таблицу, запустив aspnet_regsql.exe из командной строки Visual Studio.

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