简单的Rails登录系统

时间:2014-04-16 20:18:19

标签: ruby-on-rails

我有一个简单的rails应用程序,我有一个模型"用户"其中每一行(用户)都有一个id,一个用户名和一个密码。

我有一个"登录"我希望用户插入用户名和密码的页面,我希望将这些转发到代码,以验证数据库中是否存在任何匹配项。如果是这样,我希望为用户初始化会话。

我还希望能够根据会话是否已设置来限制对某些页面的访问。 (即:用户已登录)

现在,我习惯用PHP做的通常是设置"动作"在某些PHP页面中,我将向服务器请求此类值,然后将它们插入到数据库的查询中。如果返回的行数大于0,则将对用户进行身份验证。

在rails中是否有类似简单的方法?

谢谢:)

2 个答案:

答案 0 :(得分:1)

我还没有足够的声誉发表评论,但我完全同意Tetsu的回答。

进一步详细说明,Devise是实现用户身份验证的最佳Ruby on Rails方式。您不希望创建自己的身份验证,并且不得不担心加密密码等等。相信我,这是一个火车残骸。 Devise不断更新,提供Rails提供的最安全的解决方案。

在您的Gemfile中:gem 'devise', '~> 3.2.4'

在Devise上观看此RailsCast:http://railscasts.com/episodes/209-introducing-devise

完成所有设置后,您可以根据用户是否已登录(或重定向他或她)来有条件地加载页面。这是一个例子:

<% if user_signed_in? %>
  Signed in as <%= current_user.email %>. Not you?
  <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
<% else %>
  <%= link_to "Sign up", new_user_registration_path %> or <%= link_to "Sign in", new_user_session_path %>
<% end %>

答案 1 :(得分:0)

我不知道PHP的方式,但IMHO最简单的实现用户身份验证的方法是使用gem,如Devise

https://github.com/plataformatec/devise