ASP.NET Membership中可以更改的用户信息

来源:互联网 发布:数据报表格式 编辑:程序博客网 时间:2024/05/17 03:01

1、Username:直接改Users表(明文)

2、Password:利用存储过程强重置密码。[aspnet_Membership_SetPassword]

public stringGenerateSalt()

    {

        byte[]data = new byte[0x10];

        newSystem.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(data);

        return Convert.ToBase64String(data);

    }///<summary>

    ///t¡ê¨¹?¨®¨¹(?¨¦1-)

    ///</summary>

    ///<paramname="s">-º?Á?¤?ä?</param>

    ///<paramname="saltKey">Salt¨®¨¹Á?¤?ä?</param>

    ///<paramname="hashName">¨®¨¹?º?(MD5, SHA1, SHA256, SHA384,SHA512.)</param>

    ///<returns>¨®¨¹yÌ?¨¹?</returns>

public stringEncryptToHashString(string s,string saltKey, stringhashName)

{

        byte[]src = System.Text.Encoding.Unicode.GetBytes(s);

        byte[]saltbuf = Convert.FromBase64String(saltKey);

        byte[]dst = new byte[saltbuf.Length+ src.Length];

        byte[] inArray = null;

        System.Buffer.BlockCopy(saltbuf,0, dst, 0, saltbuf.Length);

        System.Buffer.BlockCopy(src,0, dst, saltbuf.Length, src.Length);

        System.Security.Cryptography.HashAlgorithm algorithm =

        System.Security.Cryptography.HashAlgorithm.Create(hashName);

        inArray = algorithm.ComputeHash(dst);

        return Convert.ToBase64String(inArray);

    }

protected voidButton7_Click(object sender, EventArgs e)

    {

        stringnewpw = TextBox6.Text;

        if (newpw.Length == 0)

        {

            Label7.Text = "?º?¨??¨¹?";

            return;

        }

        stringconnStr = cc.TSConnectionString;

        //=== ¨²¦¨²¨®¨¹®?Ì?¨¹?¨¹? ===

        stringsalt = GenerateSalt();

        //=== ?¡Â?¨¹?¨®¨¹(ä?º¡À¨¹?a"P@ssw0rd"Ì¡À¨?°2¨¦?¨²ºy¦¨²¨¦) ===

        //web.config\membership\providorD??Ì?passwordFormat="Hashed"¡äaSHA1t¡ê?¤¡§

        stringpassword = EncryptToHashString(newpw, salt,"SHA1");

        System.Data.SqlClient.SqlConnection conn =newSystem.Data.SqlClient.SqlConnection(connStr);

        conn.Open();

        //=== ¨²ä?¨°??D Membership ¬¨¢??ºyYa¤?Ì?¡èä?¨¬¨°¤¡ä??¨¹? ===

        System.Data.SqlClient.SqlCommand cmd =newSystem.Data.SqlClient.SqlCommand("aspnet_Membership_SetPassword", conn);

        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        //=== ?¡ã使º1®? Membership ¬¨¢??Ì? web ®|®?¨¬¨°?? ===

        cmd.Parameters.Add("@ApplicationName",System.Data.SqlDbType.NVarChar,255).Value=System.Web.Security.Membership.ApplicationName;

        //=== °a??¨¹?Ì?®?¡ì?? ===

        cmd.Parameters.Add("@UserName",System.Data.SqlDbType.NVarChar,255).Value= username;

        //=== ¨®¨¹yÌ?¨¹? ===

        cmd.Parameters.Add("@NewPassword",System.Data.SqlDbType.NVarChar,255).Value= password;

        //=== ¨¹?¨®¨¹¨¹?(¡§¨ª使º1®?¨®¨¹¨¹?Ì?¨¹?¨´ê??°a¨´??¨²¦¨²) ===

        cmd.Parameters.Add("@PasswordSalt", System.Data.SqlDbType.NVarChar, 255).Value = salt;

        //=== ??¨¹?Ì?º¡À? ===

        cmd.Parameters.Add("@CurrentTimeUtc",System.Data.SqlDbType.DateTime).Value=DateTime.Now;

        //=== ¨¹?¨®¨¹Ì??º?(ä?º¡Àº?Hash1ê?Á¡é°aä?¨??ºyº?int¨ª¬?¡ê) ===

        cmd.Parameters.Add("@PasswordFormat", System.Data.SqlDbType.NVarChar, 255).Value =System.Web.Security.Membership.Provider.PasswordFormat.GetHashCode();

        //=== ???¨¦°?¨®º??ä?¦ÌÌ??ºy ===

        System.Data.SqlClient.SqlParameter returnValue =new System.Data.SqlClient.SqlParameter();

        returnValue.ParameterName = "returnValue";

        returnValue.Direction = System.Data.ParameterDirection.ReturnValue;

        cmd.Parameters.Add(returnValue);

        //=== ¡äD¡èä?¨¬¨° ===

        cmd.ExecuteNonQuery();

        conn.Close();

        //=== ¨¬¨¦??¨¹?º?¤?¨¦| ===

        if(returnValue.Value.ToString() =="0")

        {

            Label7.Text = "T?¨¹?¨¦|";

            cc.WriteOperationLog(User.Identity.Name,"??®?¡ì?" + username + "¡¤Ì?¨¹?a" + newpw);

        }

        else

            Label7.Text = "T?¨¹?º¡ì㨹!!";

    }

3、PasswordQuestion:直接改[aspnet_Membership]

cmd.CommandText = "UPDATE [TravelService].[dbo].[aspnet_Membership]"+

                "SET [PasswordQuestion] = @passwordQuestion "+

                "WHERE [UserId] = "+

                "(SELECT aspnet_Membership.UserId as id "+

                "  FROM aspnet_Membership INNER JOINaspnet_Users "+

                "  ON aspnet_Membership.UserId =aspnet_Users.UserId "+

                "  WHERE (aspnet_Users.UserName = @username))";

这是以用户名username为已知条件,修改密码问题。

4、PasswordQuestionAnswer:利用存储过程强改

       [aspnet_Membership_ChangePasswordQuestionAndAnswer]

或直接加密密码答案然后写入表[aspnet_Membership]

protected voidButton9_Click(object sender, EventArgs e)

    {

        stringnewpw = TextBox8.Text;

        if(newpw.Length == 0)

        {

            Label10.Text = "?º?¨??¨¹?";

            return;

        }

        stringconnStr = cc.TSConnectionString;

        //=== ¨²¦¨²¨®¨¹®?Ì?¨¹?¨¹? ===

        stringsalt = "";

        System.Data.SqlClient.SqlConnection conn =newSystem.Data.SqlClient.SqlConnection(connStr);

        System.Data.SqlClient.SqlCommand cmd =newSystem.Data.SqlClient.SqlCommand();

        cmd.Connection = conn;

        cmd.CommandText = "SELECT aspnet_Membership.PasswordSalt "+

            "FROM aspnet_Membership INNER JOIN aspnet_Users "+

            "ON aspnet_Membership.UserId = aspnet_Users.UserId "+

            " WHERE(aspnet_Users.UserName = @username)";

        cmd.Parameters.Add("@username", System.Data.SqlDbType.NVarChar, 255).Value = username;

        intcount = 0;

        stringpasswordQA;

        try

        {

            conn.Open();

            salt = (string)cmd.ExecuteScalar();

            if(salt.Length <= 0)

            {

                Label10.Text = "¡ä¨°Ì?®?¡ì" + username + "Ì?¨¹?¡ê";

                return;

            }

            passwordQA =EncryptToHashString(newpw, salt, "SHA1");

            cmd.CommandText = "UPDATE [TravelService].[dbo].[aspnet_Membership]" +

                "SET [PasswordAnswer] = @passwordAnswer " +

                "WHERE [UserId] = " +

                "(SELECT aspnet_Membership.UserId as id " +

                "  FROM aspnet_Membership INNER JOINaspnet_Users " +

                "  ON aspnet_Membership.UserId =aspnet_Users.UserId " +

                "  WHERE (aspnet_Users.UserName = @username))";

            cmd.Parameters.Add("@passwordAnswer", System.Data.SqlDbType.NVarChar, 255).Value = passwordQA;

            count = cmd.ExecuteNonQuery();

        }

        catch(System.Data.SqlClient.SqlException se)

        {

            thrownew System.Configuration.Provider.ProviderException("¨¬¡Â®?¡ìº¡ì㨹¡ê\n\n¨¨º?aêo" + se.Message);

        }

        finally

        {

            conn.Close();

        }

        if(count > 0)

        {

            Label10.Text = "¨¹?¬¨¢º?¨º¬aäeã?T?ª¨ºÀ?¡ê";

            cc.WriteOperationLog(User.Identity.Name,"T?®?¡ì?" + username + "¡¤Ì?¨¹?¬¨¢º?¨º¬aäeã?a“¡ã" + passwordQA + "”¡À");

        }

        else

        {

            Label10.Text = "¨¹?¬¨¢º?¨º¬aäeã?T?º¡ì㨹¡ê";

        }

    }

5、Email、comment:system.web.security.membershipuser.updateuser(username)

protected voidButton10_Click(object sender, EventArgs e)

    {

        stringemail = TextBox9.Text;

        if(email.Length == 0)

        {

            Label12.Text = "?º?¨??Ì?EmailÌ?¡¤";

            return;

        }

        System.Web.Security.MembershipUser u = System.Web.Security.Membership.GetUser(username);

        u.Email = email;

        System.Web.Security.Membership.UpdateUser(u);

        Label12.Text = "EmailÌ?¡¤T?ª¨ºÀ?ê??Emailaêo" + email + "¡ê";

       cc.WriteOperationLog(User.Identity.Name, "T?®?¡ì?" + username + "¡¤Ì?EmailÌ?¡¤a" + email);

    }

6、LockedOut:System.Web.Security.SqlMembershipProvider. UnlockUser (username)

System.Web.Security.MembershipUseru = System.Web.Security.Membership.GetUser(username);

       if(u.UnlockUser()

7、用户角色:System.Web.Security.Roles.RemoveUserFromRoles(username,roleArray);

System.Web.Security.Roles.AddUserToRole(username, selectrole);

0 0
原创粉丝点击