我正在开发一个cron任务,通过电子邮件发送一个链接,从Active Admin下载CSV文件。该链接看起来像是:
www.adminsite.com/admin/records.csv
如果用户尚未通过系统身份验证,则主动管理员会重定向到刚刚显示“您需要先登录或注册才能继续”的页面。而不是重定向到登录页面,然后在成功验证后使用CSV下载链接。
我已经尝试过调查活跃的管理员内部,但还没有弄清楚。有什么想法吗?
谢谢!
!!!编辑!!!
我实际上是自己解决了这个问题。
因为我生成的链接导航为csv格式,所以我必须将:csv选项添加为 devise.rb 配置文件的导航格式:
config.navigational_formats = ["*/*", :html, :csv]
现在重定向到登录页面的工作正在进行,但它正在将用户带到/admin/login.csv,后者将作为空白页面返回。我假设没有csv格式的模板。
我必须将重定向从/admin/login.csv设置为/ admin / login,方法是将其添加到 routes.rb 文件中:
devise_for :admin_users, ActiveAdmin::Devise.config do
match "/admin/login.csv" => redirect("/admin/login")
end
完成。
答案 0 :(得分:0)
Active Admin使用设计来处理其登录,这可能是您无法找到任何内容的原因。
根据说明here:
在lib / custom_failure.rb中创建此类:
class CustomFailure < Devise::FailureApp
def redirect_url
#return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
new_user_session_url(:subdomain => 'secure')
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end
并将其添加到config / initializers / devise.rb:
config.warden do |manager|
manager.failure_app = CustomFailure
end