Web服务将用户信息存储在数据库中,并使用密码进行身份验证。以下是如何在ruby中实现用户密码存储和身份验证(实际数据存储和检索不在示例范围内):
require 'digest'
class User
# Use salted passwords
PASSWORD_SALT="trustno1"
# Stored password hash will be accessible through user.hashed_password
attr_accessor :hashed_password
# Authenticates user against given password and returns true
# the password matches the stored one
def verify_password(password)
if hashed_password.nil? || password.nil?
false
else
User.hash_password(password) == hashed_password
end
end
# Changes user's password
def change_password(new_password)
self.hashed_password = User.hash_password(new_password.to_s)
end
# Hashes the input with salt
def self.hash_password(password)
Digest::MD5.hexdigest(password + PASSWORD_SALT)
end
end
但是,我告诉我有与密码安全相关的问题,但我找不到任何问题。
答案 0 :(得分:1)
如果你真的想在rails中自己实现,你应该使用ActiveModel::SecurePassword::ClassMethods 你最大的问题是你正试图自己实现这个。搞这个太容易了。