Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASPNETZERO-在Angular 4/.Net Core的SelectPdf ConvertUrl()中进行身份验证_Angular_.net Core_Aspnetboilerplate_Selectpdf - Fatal编程技术网

ASPNETZERO-在Angular 4/.Net Core的SelectPdf ConvertUrl()中进行身份验证

ASPNETZERO-在Angular 4/.Net Core的SelectPdf ConvertUrl()中进行身份验证,angular,.net-core,aspnetboilerplate,selectpdf,Angular,.net Core,Aspnetboilerplate,Selectpdf,我使用的是ASPNETZERO的Angular 4+.Net内核 我有一个显示用户提交表单列表的网格和一个带有按钮的列来打印表单 这是我的打印功能;我正在输入中传递ConvertUrl()方法的url: 打印(项目:FormSummaryDto){ 这个。beginTask(); 让formUrl=AppConsts.appBaseUrl++'/#/app/main/form/'+item.formType.toLowerCase()++'/'+item.id++'/print'; let in

我使用的是ASPNETZERO的Angular 4+.Net内核

我有一个显示用户提交表单列表的网格和一个带有按钮的列来打印表单

这是我的打印功能;我正在输入中传递ConvertUrl()方法的url:

打印(项目:FormSummaryDto){
这个。beginTask();
让formUrl=AppConsts.appBaseUrl++'/#/app/main/form/'+item.formType.toLowerCase()++'/'+item.id++'/print';
let input=new ExportFormInput({formId:item.id,formUrl:formUrl,includeAttachments:true});
this.service.exportFormToPdf(输入)
.finally(()=>{this.endTask();})
.订阅((结果)=>{
if(result==null | | result.fileName===''){
返回;
}
此._fileDownloadService.downloadTempFile(结果);
},error=>console.log('downloadFile','无法下载文件');
}
转换和下载文件的过程一切正常,但是,当我进行转换(如下所示)时,由于身份验证,url重定向到登录页面,转换的正是该页面

HtmlToPdf转换器=新的HtmlToPdf();
PdfDocument doc=converter.ConvertUrl(url);
单据保存(文件);
doc.Close();
我不知道如何将SelectPdf的身份验证选项用于ASPNETZERO,我希望有人知道我可以传递当前会话/凭据的方法,或者如何使用SelectPdf的身份验证选项之一,以便它转换传递的url

谢谢!

Wg

你看到这一页了吗?


所有转换都是在新会话中完成的,因此您需要对转换器的用户进行身份验证。

在用于身份验证cookie的SelectPdf文档中,让我感到困惑的是示例中的System.Web.Security.FormsAuthentication.FormsCookieName,我假设它应该是这样的

//设置身份验证cookie
converter.Options.HttpCookies.Add(
System.Web.Security.FormsAuthentication.FormsCookieName,
Request.Cookies[FormsAuthentication.FormScookeName].Value);
但我有以下例外:

System.TypeLoadException:无法从程序集'System.Web,版本=4.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'加载类型'System.Web.Security.FormsAuthentication'。
我最终意识到我需要通过ASPNETZERO身份验证cookie(在cookie文件夹中查找后,它是“Abp.AuthToken”)。我没有尝试在服务方法中获取cookie值,而是在调用参数中传递它:

打印(项目:FormSummaryDto){
这个。beginTask();
让formUrl=AppConsts.appBaseUrl++'/#/app/main/form/'+item.formType.toLowerCase()++'/'+item.id++'/print';
让authToken=abp.utils.getCookieValue('abp.authToken');
let input=new ExportFormInput({formId:item.id,formUrl:formUrl,authToken:authToken,includeAttachments:true});
this.service.exportFormToPdf(输入)
.finally(()=>{this.endTask();})
.订阅((结果)=>{
if(result==null | | result.fileName===''){
返回;
}
此._fileDownloadService.downloadTempFile(结果);
},error=>console.log('downloadFile','无法下载文件');
}
最后在方法中,添加转换器HttpCookies选项:

HtmlToPdf转换器=新的HtmlToPdf();
Add(“Abp.authttoken”,authttoken);
PdfDocument doc=converter.ConvertUrl(url);
单据保存(文件);
doc.Close();
在此之后,我成功地转换了url


Wg

转换和下载功能是否需要用户登录?是;用户需要登录才能访问其表单列表并使用打印/导出为PDF功能。可以访问导出和下载功能的用户是否也可以访问所选表单?只有当前用户没有登录并且看起来与您的情况不符时,才会发生登录重定向;问题是在执行SelectPdf的ConvertUrl(url)方法时(将转换代码添加到问题中);是的,我已经看过了,但是我不知道如何将它与ASPNETZERO的登录结合起来;我尝试过各种各样的选择,但都没有成功。