Asp.net 试图使用Rotativa从控制器/视图生成PDF,但安全性约束不';t让Rotativa访问所需的控制器
因此,我有一个管理员控制器,它使用带有单个管理员帐户的Asp.net 试图使用Rotativa从控制器/视图生成PDF,但安全性约束不';t让Rotativa访问所需的控制器,asp.net,asp.net-mvc-4,pdf,rotativa,Asp.net,Asp.net Mvc 4,Pdf,Rotativa,因此,我有一个管理员控制器,它使用带有单个管理员帐户的[Authorize]符号(用于内容管理目的)。如果管理员未登录,则会将用户重定向到登录视图 在管理控制器中,我有以下ActionResult: public ActionResult GeneratePDF(int? id) { return new ActionAsPdf("PrintOrder/" + id) { FileName = Server.MapPath("~/PDF/test.pdf") };
[Authorize]
符号(用于内容管理目的)。如果管理员未登录,则会将用户重定向到登录视图
在管理控制器中,我有以下ActionResult:
public ActionResult GeneratePDF(int? id) {
return new ActionAsPdf("PrintOrder/" + id) {
FileName = Server.MapPath("~/PDF/test.pdf")
};
}
以上代码目前用于测试目的,稍后将进行修改
但是,当我从视图调用ActionResult时(以管理员身份登录),它只生成登录视图的PDF,就好像没有有效的管理员会话,用户被重定向一样。当在PrintOrderActionResult
上使用[AllowAnonymous]
符号时,该代码起作用,但在需要有效的用户会话时不起作用
关于如何让ActionAsPdf
方法访问所需的PrintOrder方法,并且仍然由[Authorize]
符号保护,您有什么想法吗
我从以下角度呼吁采取行动:
<a href="@Url.Action("GeneratePDF", "Admin", new { id = item.ID })">Get PDF</a>
在做了一些长期的研究之后,我发现另一篇文章也有同样的问题
作者建议将Rotativa代码放在它需要访问作为解决方案的相同方法中。这似乎是解决这个问题的一个办法,目前已经足够了。然而,尽管需要一个更稳健的解决方案,但必须这样做