0

我有一个 ASP.net MVC 应用程序,在引入 ADFS 身份验证后,我无法将 MVC 视图呈现为 PDF。

早些时候,该应用程序使用 Rotativa(使用 WkhtmltoPDF 库)进行表单身份验证和 PDF 渲染就像一个魅力。在引入 ADFS 之后,它就无法工作了。

我得到的是一个标题为“登录”的空白 PDF,页面/PDF 本身没有任何元素。

在此处输入图像描述

因为它非常表明它试图连接到某个地方,所以我相信问题出在 WkhtmltoPDF 的身份验证参数的某个地方,即我可能必须添加一些额外的参数才能支持 ADFS,但我不确定哪些参数。我已经尝试过使用--username--password参数,但它们没有帮助。

问题是:如何使它(再次)工作?

4

2 回答 2

1

尝试[AllowAnonymous]在调用视图的操作上使用属性,您可以将其转换为 PDF 示例:对于调用 rotativa 的操作,您可能会有类似的内容

return new Rotativa.ViewAsPdf("ViewToPdf", model);

并且调用的动作看起来像

[AllowAnonymous]
public ActionResult ViewToPdf(ViewModel model)
{
     return View(model);
}

我希望你能理解我的格式

于 2016-07-22T08:06:23.743 回答
0

我无法按照我想要的方式解决问题,但是对于那些对解决方案感兴趣的人,接下来的步骤描述了我所做的。

由于我尝试使用 Rotativa 呈现的页面需要身份验证,因此我添加了创建“一次性访问令牌”的逻辑,它将用户重定向到呈现相同页面但没有任何 ADFS 身份验证检查的另一个应用程序。在这种情况下,您必须修改 Rotativa 的逻辑以返回UrlAsPdf而不是ActionAsPdf.

我做的唯一授权是检查令牌的有效性。由于令牌具有快速过期时间(仅在接下来的几分钟内有效),我认为 Web 应用程序的安全性不会受到负面影响,因为没有访问令牌,没有人可以在没有身份验证的情况下访问该版本。

于 2016-10-10T08:51:12.377 回答