我有一个简单的rails应用程序,我有一个模型"用户"其中每一行(用户)都有一个id,一个用户名和一个密码。
我有一个"登录"我希望用户插入用户名和密码的页面,我希望将这些转发到代码,以验证数据库中是否存在任何匹配项。如果是这样,我希望为用户初始化会话。
我还希望能够根据会话是否已设置来限制对某些页面的访问。 (即:用户已登录)
现在,我习惯用PHP做的通常是设置"动作"在某些PHP页面中,我将向服务器请求此类值,然后将它们插入到数据库的查询中。如果返回的行数大于0,则将对用户进行身份验证。
在rails中是否有类似简单的方法?
谢谢:)
答案 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
。