gpt4 book ai didi

ruby-on-rails - 在直接访问未经身份验证的 pdf 文件时设计身份验证

转载 作者:行者123 更新时间:2023-12-04 05:57:36 25 4
gpt4 key购买 nike

我在尝试查看未经身份验证的 .pdf 文件(使用 PDFKit 生成)时遇到问题,直接从给定的 url host/.../profile.pdf .正如预期的那样,我被要求输入如图所示的凭据(不在 users/sign_in 路径中):

asking for authentication

我输入了正确的凭据,该框上下移动并再次要求输入凭据。用户或密码似乎是错误的,但事实并非如此。 Controller 的相关代码在这里:

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] )中删除 show 操作并为自己编写一个自定义过滤器以将未经身份验证的用户重定向到 new_session_path,但是这样做我不知道如何在注册后将用户重定向到 pdf show .

简而言之,设计在访问 pdf 节目时要求我提供凭据,但不接受它们。如何让用户进入 sign_in 页面并在签名后重定向回 pdf?

我正在使用 Rails 3.0.7、Ruby 1.8.7 和 Devise 1.1.5。

谢谢!

最佳答案

首先,确保它实际上是为 PDF 提供服务的 Rails,而不是它前面的 Web 服务器。 (根据您的配置,可能是请求从一开始就没有到达 Rails。)

假设它是 Rails 服务的文件,那么你应该检查你的 devise.rb 配置文件。您可能需要使 :pdf 成为导航格式,这将允许 Devise 发出 302 重定向到您的登录页面:
config.navigational_formats = [:html, :pdf] # you may have additional formats
此外,如果 PDF 尚未存在,您可能需要将 PDF 添加到您的 mime_types.rb 初始值设定项:
Mime::Type.register 'application/pdf', :pdf

关于ruby-on-rails - 在直接访问未经身份验证的 pdf 文件时设计身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com