我使用ruby 1.9.3,Rails 4.0.4和Redmine 1.4.4
我只有在有权利的情况下才能访问下载PDF。
我的控制器:
class MyController < ApplicationController
unloadable
def myFunction
# code that create a pdf
File.open(myPdf, 'r') do |file|
send_file file, :filename => myPdf, :type => "application/pdf", :disposition => "attachment"
end
end
end
end
如果我尝试访问我的PDF而没有记录,我可以下载它,所以我需要检查身份验证。
我尝试了http_basic_authenticate_with :name => "name", :password => "psw"
,它给了我(undefined method 'http_basic_authenticate_with' for myController:Class
。
我尝试了before_action :authenticate
,它给了我undefined method 'before_action' for myController:Class
。
我尝试了before_filter :authenticate_user
...它给了我undefined method 'authenticate_user' for #<myController:0x000000064f20d0>
我应该使用before_action
,因为它的Rails 4,它为什么会工作?
我该怎么办?
编辑:我不希望所有用户都可以访问pdf,只是我给出的那些...
答案 0 :(得分:0)
我在我的项目中使用此功能:
class DownloadController < ApplicationController
before_action :authenticate, only: :billing_pdf
def billing_pdf
# i save my pdf file in private folder
send_file Rails.root.join('private', "billing_pdf"), type: "application/pdf", x_sendfile: true
end
def authenticate
authenticate_or_request_with_http_basic('Administration') do |username, password|
username == 'admin' && password == 'password'
end
end
end
在观点中:
<%= link_to 'Download Billing', download_billing_pdf_path %>
路线中的:
namespace :download do
get 'billing_pdf'
end