如何在rails 4中从头开始创建身份验证

时间:2015-09-01 02:05:57

标签: ruby-on-rails ruby ruby-on-rails-4 authentication

我正在尝试在rails 4中创建一个笔记应用程序,我真的不想使用设计或任何其他用户身份验证系统,因为我真的只想自己编写代码。我发现的唯一问题是没有任何好的教程。 tutorials that I have found并没有教你如何真正进行用户身份验证,因为你一直呆在所谓的主页上。所以我想知道是否有人从头开始有任何想法或用户身份验证方法的例子?

谢谢,我真的很感激。

3 个答案:

答案 0 :(得分:2)

如果这是个人学习练习,那么没有比google获取信息更好的方法了。大量的教程可用。这些教程不需要关于Ruby(或Rails)。无论实现语言如何,基本原理都是相同的

通过检查现有代码,通过示例学习。您可以在此处找到许多现有的身份验证系统。看看他们的代码。 https://www.ruby-toolbox.com/categories/rails_authentication

如果您打算使用自己的身份验证,我会阻止您这样做。一开始auth问题似乎很简单,但是有许多挑战和地雷在等着你:会话,敏感数据存储/传输,cookie处理等等。这些只是表面上的划痕。

答案 1 :(得分:2)

不要这样做。

您不知道有多少种方法可能会让您不小心让自己受到严重妥协。

你并不像数百名在设计方面工作多年的开发人员那样聪明(我们都不是)。

查看Rails Security Guide,了解人们可能使用您可能从未考虑过的应用的方式的简短列表。

如果你想玩游戏并去看看它是如何完成的,那么一定要玩......但是当你真正找到一个真正的应用程序时......只需使用设计。

答案 2 :(得分:0)

链接@ miler350是一个很好的起点,但是使用Rails 4,ActionModel现在有has_secure_password负责管理密码哈希,你只需要在表中使用password_digest字段并启用宝石文件中的bcrypt gem(不要忘记运行bundle install)。查看APIDoc http://apidock.com/rails/ActiveModel/SecurePassword/ClassMethods/has_secure_password

至于验证用户,我在我想要保护的控制器中使用before_action辅助方法。例如,在我的UserControllerbefore_action :require_login引用了

def require_login
  unless current_user
    flash[:error] = MessageBox.alert("You must be logged in to view this")
    redirect_to root_url
  end
end

http://guides.rubyonrails.org/action_controller_overview.html#filters

这假设您在ApplicationController

中有辅助方法
def current_user
  begin
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  rescue
    session[:user_id] = nil
  end
end
helper_method :current_user