has_secure_password用户授权

时间:2011-11-02 14:48:09

标签: ruby-on-rails ruby-on-rails-3 security user-accounts authentication

我已经按照Railcast#270 has_secure_password教程进行了操作。

例如,我的标题中有以下内容:

<% if current_user %>
  <li><%= link_to "Profile", current_user %></li>
  <li class="last"><%= link_to "Logout", logout_path %></li>
<% else %>
 <li><%= link_to "Login", login_path %></li>
 <li class="last"><%= link_to "Register", signup_path  %></li>
<% end %>

但是,如果用户可以猜到特定页面的路径,那么他们可以查看该页面是否已登录。什么是最简单的方法来防止这种情况,只有授权用户才能查看某些页面? rails有内置的帮助吗?

1 个答案:

答案 0 :(得分:2)

您可以在控制器中添加一个前置过滤器,它可以完全满足您的需要。像:

class ProductController < ActionController::Base
  before_filter :login_required, :only => [:new, :create, :edit, :update]

  # ...

  private

  def login_required
    unless current_user
      flash[:alert] = 'Log in!'
      redirect_to login_url, :status => 401
    end
  end
end

这是一个包含产品的虚构示例,但我认为您会明白这一点。

祝你好运

托拜厄斯