我写过一个使用bankid身份验证的网站,我不知道这在瑞典之外是多么常见,但基本上它既可以是手机中的应用程序,也可以是Windows中的本地软件。要在Windows中启动应用程序,需要进行如下所示的重定向:
if (startLocalApp)
{
Response.Redirect("bankid:///?autostarttoken=" + AuthResp.AuthenticateResponse1.AutoStartToken + "&redirect=" + Request.Url.AbsoluteUri);
}
问题在于,软件的重定向不能像我需要的那样工作,因为它的重定向确实会打开一个新的标签页,其中包含我需要在新标签中返回的网页,以及会话变量全都搞砸了。所以我需要做的是相反,在新标签中启动应用程序,并在完成后关闭标签,因为在我启动应用程序之前我需要所有引用它不需要在甚至相同的浏览器窗口
那么如何在另一个选项卡中进行重定向,是否可以在重定向后继续执行代码?如果没有,我需要发回一个帖子继续执行代码隐藏。
编辑: 我尝试了一种解决方案,感觉就像我越来越接近,但我还没到那里。 前端:
<script type="text/javascript">
function StartBankIdApp(){
var _url = 'bankid:///?autostarttoken=<%= (AuthResp == null || AuthResp.AuthenticateResponse1 == null) ? "null" : AuthResp.AuthenticateResponse1.AutoStartToken %>&redirect=null';
var $irWin = window.open(_url, '_blank');
if ($irWin != null) {
$irWin.close();
}
}
</script>
代码隐藏:
if (startLocalApp)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), StartBankIdApp", "StartBankIdApp()", true);
}
应用程序未启动,即应打开的窗口无法打开。 我做错了什么?
答案 0 :(得分:-1)
我认为您正在尝试使用&#34; URL计划&#34;推出一款应用。并且您希望应用程序应在新选项卡(或窗口)中触发。
这可以通过javascript实现。要在新选项卡中打开任何链接,我们可以使用window.open并将target属性设置为_blank。这是一个示例代码
var _url = 'app:MyApp?queryString=somestring';
var $irWin = window.open(_url, '_blank');
if ($irWin != null) {
$irWin.close();
}
我在这里所做的是,在启动应用程序后,我关闭了新标签页(或窗口)。
javaScript代码将继续运行(即不会等待应用程序完成此过程)。