irb(main):002:0> a = Player.last
=> #<Player id: 2, name: "Samuel_Fontessa", password: "26103a282a81015d54d1b5d43
58afd7c", created_at: "2011-11-22 19:31:09", updated_at: "2011-11-25 12:54:46",
avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_u
pdated_at: nil, skin: 185, kp: 1, money: 500, bank: 1000, job: 0, job_level: 0,
organization: 1, rank: 1, player_level: 1, skype: "bangeusz", gadu: 7299462, sig
nature: "Razem tak wiele, choć obiektywnie prawie wcale.", hours: 550, minutes:
0, warns: 0, sex: nil, email: nil, active: 0>
irb(main):003:0> a.password = "123"
=> "123"
irb(main):004:0> a.save
=> true
irb(main):005:0> a = Player.last
=> #<Player id: 2, name: "Samuel_Fontessa", password: "202cb962ac59075b964b07152
d234b70", created_at: "2011-11-22 19:31:09", updated_at: "2011-11-25 12:55:21",
avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_u
pdated_at: nil, skin: 185, kp: 1, money: 500, bank: 1000, job: 0, job_level: 0,
organization: 1, rank: 1, player_level: 1, skype: "bangeusz", gadu: 7299462, sig
nature: "Razem tak wiele, choć obiektywnie prawie wcale.", hours: 550, minutes:
0, warns: 0, sex: nil, email: nil, active: 0>
irb(main):006:0> a.kp = 1
=> 1
irb(main):007:0> a.save
=> true
irb(main):008:0> a = Player.last
=> #<Player id: 2, name: "Samuel_Fontessa", password: "d9b1d7db4cd6e70935368a1ef
b10e377", created_at: "2011-11-22 19:31:09", updated_at: "2011-11-25 12:55:27",
avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_u
pdated_at: nil, skin: 185, kp: 1, money: 500, bank: 1000, job: 0, job_level: 0,
organization: 1, rank: 1, player_level: 1, skype: "bangeusz", gadu: 7299462, sig
nature: "Razem tak wiele, choć obiektywnie prawie wcale.", hours: 550, minutes:
0, warns: 0, sex: nil, email: nil, active: 0>
irb(main):009:0>
https://github.com/bangeusz/bsrp/blob/master/app/models/player.rb => Model | Dlaczego pole hasło się zmienia? Co w tym modelu jest źle?
Robisz Digest::MD5.hexdigest(self.password) poprzednio już hexdigestowanej wartości hasła
[code]ruby-1.9.2-p180-fastrequire :001 > require ‘digest’
=> true
ruby-1.9.2-p180-fastrequire :002 > Digest::MD5.hexdigest(“123”)
=> “202cb962ac59075b964b07152d234b70”
ruby-1.9.2-p180-fastrequire :003 > Digest::MD5.hexdigest(“202cb962ac59075b964b07152d234b70”)
=> “d9b1d7db4cd6e70935368a1efb10e377”[/code]
Zwykle password jest tylko wirtualnym atrybutem a zaszyfrowane trzyma się w kolumnie encrypted_password
http://railscasts.com/episodes/250-authentication-from-scratch
http://railscasts.com/episodes/16-virtual-attributes
http://railscasts.com/episodes/167-more-on-virtual-attributes
Nie wiem jak to rozwiązać
Zrób w bazie danych pole encrypted_password i tam zapisuj hexdigest (albo jeszcze lepiej użyj bcrypta).
Dobra, zrobiłem. Ale nie ma innej opcji? Ja nie chce mieć niezakodowanych haseł użytkowników (coś takiego jak w bcrypt).
Z wielką chęcią, jedna język w którym piszę skrypt do gry nie posiada bcrypt’a.