如何在Rails 3中保护静态内容?

时间:2011-01-25 19:17:02

标签: ruby-on-rails ruby-on-rails-3

我的应用程序有HTML用户指南。但我不希望那些没有登录的人能够访问它。我正在使用Devise身份验证和CanCan授权。

3 个答案:

答案 0 :(得分:3)

我会将它存储在公共文件夹之外,并通过一个只执行身份验证检查的简单控制器来提供它。使用x-sendfile(https://tn123.org/mod_xsendfile/)执行此操作可以最大限度地减少额外的服务器负载。这是一个粗略的指南:http://elivz.com/blog/single/mod_xsendfile/

答案 1 :(得分:0)

我对您使用的身份验证方法并不熟悉,但是一旦您对用户进行身份验证,就可以在会话中保存logged_in标志

session[:user]='logged_in'

比你可以创建帮手

def logged_in?
  session[:user] =='logged_in'
end

现在,您将在视图中使用此助手

<% if logged_in? %>
  your html
<% end %>

现在这是非常基本的,如果您需要更具体的信息,请告诉我们

- 所以我注意到你要确保只有登录的用户才能看到整个页面。

然后您应该使用身份验证功能作为控制器中的前置过滤器

before_filter :authenticate

答案 2 :(得分:0)

查看High Voltage插件。

这是一个非常简单的控制器,旨在提供静态内容。通过扩展HighVoltage :: PagesController进行身份验证,并像处理任何其他控制器一样处理身份验证(链接页面上提供的最小示例)。