我有以下代码
PdfDocument doc = converter.ConvertUrl(BaseUrl+Path);
var PdfArray = doc.Save();
doc.Close();
return new FileStreamResult(new MemoryStream(PdfArray), "application/pdf");
问题是它尝试访问的链接(我自己的控制器)受[Authorized]保护。
是否可以在链接中添加用户?
我想以这种方式访问功能/ PDFTOCV / ID
PDFTOCV中有一个函数调用另一个控制器,在该控制器中ID用于确定要呈现的CV,问题是当我尝试从PDFTOCV访问该函数时,我无法授权(即使我可以访问以相同方式受保护的PDFTOCV)
以下是用于从视图创建PDF的功能。
[Authorize]
public async Task<FileStreamResult> PDFCV(int Id)
{
var user = _userManager.GetUserAsync(User);
HtmlToPdf converter = new HtmlToPdf();
var BaseUrl = HttpContext.Request.Host;
var Path = Url.Action("PreviewCv", "Cv", new { Id = Id});
PdfDocument doc = converter.ConvertUrl(BaseUrl+Path);
var PdfArray = doc.Save();
doc.Close();
return new FileStreamResult(new MemoryStream(PdfArray),"application/pdf");
}
用于创建PreviewCV视图的控制器功能。
[Authorize]
public async Task<IActionResult> PreviewCv(int id)
{
var user = await _userManager.GetUserAsync(User);
logic here
}
当我直接访问PreviewCV时,预览工作正常。
答案 0 :(得分:1)
您需要将身份验证数据添加到转换器对访问转换页面的请求中。由于您使用的是Cookie
身份验证,因此只需要使HtmlToPdf
转换器就可以使用当前的身份验证cookie
HtmlToPdf converter = new HtmlToPdf();
//default auth cookie name; set cookie name your application uses
string cookieName = CookieAuthenticationDefaults.CookiePrefix + CookieAuthenticationDefaults.AuthenticationScheme;
converter.Options.HttpCookies.Add(cookieName, HttpContext.Request.Cookies[cookieName]);