【发布时间】:2011-11-03 14:41:47
【问题描述】:
当我试图查看未经身份验证的 .pdf 文件(使用 PDFKit 生成)时,我遇到了一个问题,它直接来自给定的 URL host/.../profile.pdf。正如预期的那样,我被要求输入如图所示的凭据(不在 users/sign_in 路径中):
我输入了正确的凭据,框上下移动并再次询问凭据。看起来用户名或密码错误,但事实并非如此。控制器的相关代码在这里:
class Entrepreneur::ProfilesController < ApplicationController
before_filter :authenticate_user!
def show
respond_to do |format|
format.pdf do
html = render_to_string(:layout => false , :action => "show.html.haml")
kit = PDFKit.new(html)
send_data(kit.to_pdf, :filename => "name.pdf", :type => 'application/pdf')
end
end
end
end
如您所见,没有什么花哨的。我试图从过滤器 (before_filter :authenticate_user!, :except => [:show]) 中删除显示操作并为自己编写一个自定义过滤器以将未经身份验证的用户重定向到 new_session_path,但是这样做我不知道如何在注册后将用户重定向到 pdf 节目.
简而言之,devise 在访问 pdf 节目时会询问我的凭据,但不接受这些凭据。如何让用户进入登录页面并在签名后重定向回 pdf?
我正在使用 Rails 3.0.7、Ruby 1.8.7 和 Devise 1.1.5。
谢谢!
【问题讨论】:
-
为什么会弹出一个框?
before_filter :authenticate_user!应该将您重定向到登录页面,不是吗?你有什么改变吗? -
您需要显示验证用户身份的代码。
-
@Robin,不,没有任何改变
-
@draevor,Devise 负责处理,我没有更改 devise 的功能。
-
@Robin,是的,它应该在任何其他情况下都会这样做,但在直接访问 PDF 时不会。
标签: ruby-on-rails devise