成功验证后打开新(选项卡)窗口进行 Oauth 验证并返回上一个选项卡(登录)的验证策略是什么?
我正在为 Twitter、Facebook 和 Google 使用 passportjs 身份验证策略。但所有这些都在同一个窗口选项卡中进行身份验证。是否有我可以遵循的预定义策略来执行上述操作?
我可以使用 a(target="_blank") 在新帐户中打开权限窗口,但是在帐户身份验证(由用户)时它不会返回到上一个选项卡。
编辑(基于以下答案)
登录页面如下所示:-
!!!
html
head
script.(type='text/javascript')
function newWindow (auth_target) {
authWindow = window.open(auth_target);
var authenticationSuccessUrl = "/home"
authWindow.onClose = function () {
alert('onClose called.');
authWindow.close();
window.location = authenticationSuccessUrl;
}
}
body
button(type="button", onclick="newWindow('auth/google');").btnLogin with Gmail
对于新窗口(家庭),我写道:-
!!!
html
head
script(type='text/javascript').
function onAuthSuccess() {
authWindow=window.location;
window.onClose();
}
body(onload='onAuthSuccess();')
它不是我应该编写的完整代码,但即使这样也行不通。如果在中间身份验证窗口(通过谷歌,用于输入密码)之后调用主页,则上述代码不起作用,并且窗口不会关闭。
// 只是作为一些更多信息,如果不需要,请忽略另外请注意,
window.close()
仅当触发它打开的父窗口打开时才有效。如果当前窗口是独立的,上面的 window.close() 将不会关闭窗口。同样,上面的主页代码无法关闭当前窗口。