试图让我们Rotativa从Controller / View生成PDF,但安全措施并不能让Rotativa访问所需的控制器

时间:2017-05-25 20:26:02

标签: asp.net asp.net-mvc-4 pdf rotativa

所以,我有一个管理员控制器,它使用[Authorize]表示法和一个管理员帐户(用于内容管理)。如果管理员未登录,则会将用户重定向到登录视图。

在Admin控制器中,我发现了这个ActionResult:

public ActionResult GeneratePDF(int? id) {
    return new ActionAsPdf("PrintOrder/" + id) {
        FileName = Server.MapPath("~/PDF/test.pdf")
    };
}

上述代码目前用于测试目的,稍后会进行修改。

但是,当我从View调用ActionResult(以管理员身份登录)时,它只生成登录视图的PDF,就好像没有有效的管理会话并且用户被重定向一样。在PrintOrder [AllowAnonymous]上使用ActionResult表示法时,代码可以正常工作,但在需要有效用户会话时则不行。

有关如何让ActionAsPdf方法访问所需的PrintOrder方法并仍以[Authorize]表示法保护的任何想法?

我从View中调用Action如下:

<a href="@Url.Action("GeneratePDF", "Admin", new { id = item.ID })">Get PDF</a>

1 个答案:

答案 0 :(得分:0)

经过长时间的研究后,我发现了另一篇同样问题的帖子。

Why does Rotativa always generate my login page? Why is it slow?

作者建议将Rotativa代码放在需要作为解决方案访问的相同方法中。这似乎是解决问题的方法,现在已经足够了。然而,虽然需要更强大的解决方案,但这必须要做。