Electron回调只能调用一次
我有一个简单的电子应用程序,它围绕着一个提示输入用户名和密码的web应用程序 问题: 1) 当用户输入错误的凭据并且authWindow再次出现时。使用正确的凭据,第二次登录不会发生 2) 当用户两次输入错误的凭据时,authWindow将不再显示 感谢您的帮助 这是我的密码:Electron回调只能调用一次,electron,Electron,我有一个简单的电子应用程序,它围绕着一个提示输入用户名和密码的web应用程序 问题: 1) 当用户输入错误的凭据并且authWindow再次出现时。使用正确的凭据,第二次登录不会发生 2) 当用户两次输入错误的凭据时,authWindow将不再显示 感谢您的帮助 这是我的密码: const { app, BrowserWindow, ipcMain } = require('electron'); app.on("login", (event, webContents, request, au
const { app, BrowserWindow, ipcMain } = require('electron');
app.on("login", (event, webContents, request, authInfo, callback) => {
event.preventDefault();
createAuthWindow().then(credentials => {
callback(credentials.username, credentials.password);
});
});
function createAuthWindow() {
authWindow = new BrowserWindow({
show: false,
width: 400,
height: 200,
webPreferences: {
nodeIntegration: true
},
title: "Authentication",
});
authWindow.on('ready-to-show', function (){
authWindow.show();
});
authWindow.loadFile('password-form.html');
return new Promise((resolve, reject) => {
ipcMain.once('password-form-submission', (event, username, password) => {
authWindow.close();
const credentials = {
username,
password
};
resolve(credentials);
});
});
}
function createChatWindow() {
chatWindow = new BrowserWindow({
show: false,
width: 1000,
height: 800,
webPreferences: {
devTools: true
},
icon: __dirname + '/build/icon.png',
title: "Messenger",
});
chatWindow.once('ready-to-show', function (){
chatWindow.show();
});
chatWindow.loadURL('https://example.com');
chatWindow.webContents.openDevTools();
}
app.on('ready', createChatWindow);
更新:在Electron 8中,此问题似乎已得到解决,因此您无需执行下面描述的解决方法 我也面临过这个问题,下面是我最后做的事情 我必须使用这个Electron api才能重试更多次 您的“登录”事件处理程序将如下所示
const{app,BrowserWindow,ipcMain,net}=require('electron');
app.on(“登录”),(事件、网络内容、请求、身份验证信息、回调)=>{
event.preventDefault();
让用户名=”;
让密码=”;
const req=net.request({
方法:request.method,
url:request.url
});
请求打开(“响应”,响应=>{
控制台日志(响应);
如果(response.statusCode>400){
console.error(“出错”);
回调(“,”);
}否则{
console.log(“我们很好,请求成功”);//请求已正确验证
回调(用户名、密码);
}
on(“错误”,err=>{
错误(“出错,响应错误”,err);
回调(“,”);
});
});
请求打开(“登录”,(loginAuthInfo,loginCallback)=>{
这个.createAuthPrompt().then(凭据=>{
用户名=凭据。用户名;
密码=凭证。密码;
loginCallback(用户名、密码);
});
});
请求结束();
});
对于我的应用程序(使用Electron 4)的网络请求,在凭据正确之前,我不会得到响应。相反,如果输入了无效凭据,则会触发另一个“登录”事件。这会一直重复,直到提供正确的凭证为止。@ShaneGannon,这就是想法。这允许用户重试多次,直到成功。我要补充的是,如果您多次输入无效凭据>(可能15次),您将得到一个“错误”响应。在使用Electron 8.3.1对我的代理进行身份验证时,我仍然会遇到此错误。有办法吗?