【问题标题】:SqlConnection.ChangePassword new password does not work immediatelySqlConnection.ChangePassword 新密码不立即生效
【发布时间】:2016-02-05 23:06:05
【问题描述】:

我继承了一个使用个人 SQL 帐户进行身份验证的 Web 应用程序。我需要更新登录过程以使用不同类型的哈希。

伪代码

if (login(newhash(password)) == 0) // login using new hash function doesn't work
{
    if (login(oldhash(password)) == 1) // login with old hash works
    {
        SqlConnection.ChangePassword(connstr);
        login(newhash(password)); 
    }
}

问题是第二次登录(newhash(password) 不会立即起作用。如果我在 ChangePassword 和登录之间放置一个 System.Threading.Thread.Sleep(5000) 那么它会起作用。SqlConnection 正确关闭时做登录()

我也尝试改用 sp_password,但它仍然不会立即使用新密码进行身份验证。有没有办法消除这种“密码更改滞后”?

编辑:

我添加了 SqlConnection.ClearPool(conn) 并且问题仍然存在。 SQL Profiler 显示如下:

  1. 审核登录失败
  2. 审核登录
  3. SQL:BatchStarting
  4. SQLBatch 已完成
  5. 审核登录更改密码事件
  6. 审核登录
  7. 审核登录失败

所以一切都是从 1-6 开始的,但是我不知道 #7 是从哪里来的。

【问题讨论】:

  • 你的代码能编译吗?因为 changepassword() 不接受单个参数。
  • 也许是一个开放的事务,只是在一段时间后才提交?
  • 我的代码可以编译。如果我等待大约 5 秒,则密码更改成功。

标签: asp.net sql-server


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多