Read my latest article: 8 things I look for in a Ruby on Rails app (posted Thu, 06 Jul 2017 16:59:00 GMT)

Rails Login with MD5

Posted by Mon, 14 Mar 2005 02:14:03 GMT

I am working on migrating an existing system that utilizes MD5 rather than SHA1 for password encryption so I needed to make a few adjustments to the login process.

I had issued the following command which created some objects to work with.
./script/generate login User

My existing system also uses the email address as the login username, so I modified the the file ./app/models/user.rb:

I changed this:
  def self.sha1(pass)
    Digest::SHA1.hexdigest("---changme--#{pass}--")
  end
to:
  def self.md5(pass)
    Digest::MD5.hexdigest("--my-salt--#{pass}")
  end

Then I went and changed instances of sha1 in user.rb to md5.

The next step was to modify the field that authentication was checking the database with.

I changed this:
  def self.authenticate(login, pass)
    find_first(["login = ? AND password = ?", login, sha1(pass)])
  end
to this:
  def self.authenticate(login, pass)
    find_first(["email = ? AND password = ?", login, md5(pass)])
  end

The last step was to modify the table that the system looks in for the users who can login to the system. Still in user.rb, I added this to the top of the User class.

class User < ActiveRecord::Base

def self.table_name() "employees" end

...
end
Get help with your Rails project

comments powered by Disqus