0

私はVS2010を開発しています。これは私の問題です: ユーザーを認証して別のページにリダイレクトするフォームがあります。

ここに私のログインコントロールの一部があります

<asp:Login ID="LoginUser" runat="server" EnableViewState="false" 
        RenderOuterTable="false" DestinationPageUrl="~/verwaltung.aspx" MembershipProvider="AspNetSqlMembershipProvider">

また、私のweb.configには次のものがあります。

<membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
      </providers>
    </membership>

どうすればこの問題を解決できますか?

4

1 に答える 1

0

コードビハインドは空だと言いましたが、実際にログイン コントロールを使用する場合は、このようなログイン ハンドラを記述する必要があります。

protected void Login1_Authenticate1(object sender, AuthenticateEventArgs e)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Online"].ConnectionString);
            SqlCommand cmd = new SqlCommand("SELECT FirstName, LastName FROM Account WHERE Username=@Username AND Password=@Password", conn);
            SqlDataReader rdr = null;
            SqlParameter Username = new SqlParameter();
            Username.SqlDbType = SqlDbType.VarChar;
            Username.ParameterName = "Username";
            Username.Value = Login1.UserName.ToString().ToLower().Trim();

            SqlParameter Password = new SqlParameter();
            Password.SqlDbType = SqlDbType.VarChar;
            Password.ParameterName = "Password";
            Password.Value = Login1.Password;

            cmd.Parameters.Add(Username);
            cmd.Parameters.Add(Password);

            try
            {
                conn.Open();
                rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    e.Authenticated = true;//User was found in the database
                    Session["Username"] = Login1.UserName.ToString();
                    Session["Name"] = rdr[0].ToString() + " " + (rdr[1].ToString() == null ? "" : rdr[1]);
                }
            }
            finally
            {
            if (conn != null)
                conn.Close();
            if (rdr != null)
                rdr.Close();
            if (e.Authenticated)
                Response.Redirect("profile.aspx");//Do whatever needs to be done when user gets authenticated
            }
        }
于 2012-06-23T06:01:35.593 に答える