我正在尝试在Ruby中创建一个简单的命令行用户身份验证系统 我使用MySQL来存储用户信息 我决定将密码存储为MD5哈希值,主要是因为它很简单 我此刻并不想做任何疯狂的事情,我只是想让它发挥作用 然而,当我在Ruby中使用select语句来拉出散列时,我可以将它与用户输入的散列进行比较,它不是以相同的32字符格式出现的!
当我使用MySQL来选择我得到的哈希时:
SELECT password FROM users WHERE username = 'admin';
+----------------------------------+
| password |
+----------------------------------+
| d456c1f6fa85ed2f6a26b15139c6ddc2 |
+----------------------------------+
当我使用Ruby时..
con.query("SELECT password FROM users WHERE username = 'admin'")
#<Mysql::Result:0x950b208>
我之前从未真正编程,我真的很喜欢Ruby 我一直在谷歌上搜索两天,似乎找不到任何东西 我很抱歉,如果这是一个非常简单的解决方案,但我似乎无法在任何地方找到它 我也很喜欢有关更好的方式去做这个小项目的建议!在此先感谢:)
答案 0 :(得分:4)
看起来您只需要处理查询结果。 query
的返回值是结果集对象:
rows = con.query("SELECT password FROM employee WHERE username = 'admin'")
rows.each do |row|
puts row[0]
end
答案 1 :(得分:0)
尝试
rows.map(&:password)
也应该有用。