MembershipUser.ChangePassword 异常时回滚

MembershipUser.ChangePassword Rollback when exception

提问人:Samra 提问时间:12/8/2022 更新时间:12/8/2022 访问量:21

问:

我已经实现了changepassword控件,并正在尝试在代码隐藏中更新密码。它有效!但是,在测试负面方案(例如提供小于所需长度的密码)时,ChangePassword 方法会抛出 ArgumentException,这是可以的,但同时它会更新数据库中的密码。 如何正确回滚?在引发异常之前触发了哪些事件?

Try

                Dim password As String = ChangePwd.NewPassword

                'update passwordformat
                sp.UpdatePasswordFormat(username, "1")
                stepsDone += 1
                
                Dim mu As MembershipUser = Membership.Providers("VLSqlMembershipProvider").GetUser(username, False)

                'Dim resetPassword As String = mu.ResetPassword()
                ' returns false if the current password is invalid)
                If (mu.ChangePassword(mu.ResetPassword(), password)) Then
                    stepsDone += 1

                    'update account to issecurelyupgraded = 1
                    sp.UpdateUserSecurelyUpgradedFlag(username)
                    stepsDone += 1
                    'Else
                    'sp.UpdatePasswordFormat(username, "0")
                End If

            Catch argsex As ArgumentException
                sp.UpdatePasswordFormat(username, "0")
            Catch ex As Exception
                If stepsDone = 1 Then
                    'roll back updatepasswordformat
                    sp.UpdatePasswordFormat(username, "0")
                ElseIf stepsDone = 2 Then
                    'roll back first 2 steps
                End If
            End Try

一些背景

我正在从清除密码格式迁移到哈希密码格式,并有一个自定义哈希实现。

<membership defaultProvider="VLSqlMembershipProvider" hashAlgorithmType="customhash">

这就是为什么我首先将密码格式从 0 更新为 1,然后更新密码,最后将我的脏标志设置为 false。

vb.net 异常 asp.net-membership change-password membershipuser

评论


答: 暂无答案