【发布时间】:2012-04-28 01:06:37
【问题描述】:
我为我的网站保留了两个密码(据网站人类用户所知,实际上是相同的密码,但使用两种不同的算法和盐进行散列和加盐)。一个放在 WebUsers 表中,这是用户登录网站时验证密码的地方。另一种是oracle用户的密码,每个网站用户对应一个oracle用户。
在进行更改密码程序时,我必须在 WebUsers 表以及 oracle 中的事务中更改密码。问题是,DDL 语句 [alter user ...] 在执行任何操作之前提交。如果 [alter user ...] 失败并且在异常处理代码中我回滚事务,则不会回滚 WebUsers 表中的更改。有什么解决办法吗?
【问题讨论】:
-
如果 DDL 失败,您不能将旧的哈希值存储在变量中并使用旧值再次更新您的 WebUsers 表吗?
-
为什么将密码保存在 Oracle 和表中?您的身份验证无法合并,从而完全消除问题是有原因的吗?
标签: oracle