1

我遵循Railcast#270的has_secure_password教程,并且已经可以正常工作。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 %> 

但是,如果用户可以猜测到某个特定页面的路径,然后如果他们登录或没有,他们可以查看页面。什么是最简单的方法来防止这种情况,只有授权用户查看某些页面?轨道是否有内置的帮助?

回答

2

您可以在控制器中添加一个before过滤器,该过滤器可以完全满足您的需求。喜欢:

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 

这是一个假想的例子与产品,但我想你会明白。

问候

托比亚斯