Ruby on rails 如何在RoR中搜索记录?
我知道我可以使用查询语言来查找我想要的记录。我正在做一个登录页面,我想找到与用户名和密码匹配的记录,但我不想循环所有元素来找到我想要的用户(),我应该在RoR中做什么,除了键入SQL。也许:Ruby on rails 如何在RoR中搜索记录?,ruby-on-rails,Ruby On Rails,我知道我可以使用查询语言来查找我想要的记录。我正在做一个登录页面,我想找到与用户名和密码匹配的记录,但我不想循环所有元素来找到我想要的用户(),我应该在RoR中做什么,除了键入SQL。也许: User.first(:conditions => {:login => 'ted', :password => 'secret'}) # returns nil for no match and first match for a good record # make sure the
User.first(:conditions => {:login => 'ted', :password => 'secret'})
# returns nil for no match and first match for a good record
# make sure there is a unique index on login
对于身份验证,我强烈建议()也许:
User.first(:conditions => {:login => 'ted', :password => 'secret'})
# returns nil for no match and first match for a good record
# make sure there is a unique index on login
对于身份验证,我强烈建议()您可以使用动态查找器按用户名和密码查找用户:
@user = User.find_by_user_name_and_password('scott', 'tiger')
您可以使用动态查找器按用户名和密码查找用户:
@user = User.find_by_user_name_and_password('scott', 'tiger')
虽然Sam和Chandra提供的其他答案在技术上是正确的,但这两种解决方案都暗示密码是以明文形式存储的——这是一个非常糟糕的想法。如果有人不应该访问你的数据库,他们将拥有一整套用户名(可能还有电子邮件地址),以及所有密码 请考虑使用一种算法来确保密码在数据库中被加密,例如BLIPT。你需要宝石才能使用它
你也应该考虑从查询中完全去掉密码。这是一种良好的做法,因为它提供了额外的安全级别;SQL注入变得更加难以执行。如果用户具有唯一的用户名,仅获取用户名应返回相同的对象,然后可以检查密码是否正确:
@user = User.find_by_username(params[:username])
if @user.password == params[:password]
# do something
else
# do something else
end
理想情况下,您应该使用bcrypt并在查询中省略密码。GitHub上的bcrypt ruby自述文件(我提供的链接)中描述了如何做到这一点。虽然Sam和Chandra提供的其他答案在技术上是正确的,但这两种解决方案都暗示密码以纯文本形式存储——这是一个非常糟糕的想法。如果有人不应该访问你的数据库,他们将拥有一整套用户名(可能还有电子邮件地址),以及所有密码 请考虑使用一种算法来确保密码在数据库中被加密,例如BLIPT。你需要宝石才能使用它
你也应该考虑从查询中完全去掉密码。这是一种良好的做法,因为它提供了额外的安全级别;SQL注入变得更加难以执行。如果用户具有唯一的用户名,仅获取用户名应返回相同的对象,然后可以检查密码是否正确:
@user = User.find_by_username(params[:username])
if @user.password == params[:password]
# do something
else
# do something else
end
理想情况下,您应该使用bcrypt并在查询中省略密码。GitHub上的bcrypt ruby自述文件(我提供的链接)中描述了如何做到这一点。对于像我这样的初学者来说,使用authlogic似乎很困难。。。我发现RoR有很多速记要做的事情,但我对它没有足够的了解。。。thx很多。对于像我这样的初学者来说,似乎很难使用authlogic。。。我发现RoR有很多速记要做的事情,但我对它没有足够的了解。。。非常感谢。