作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 electron 应用程序,它环绕着一个提示输入用户名和密码的网络应用程序。
问题:
1) 当用户输入错误的凭据并且 authWindow 再次出现时。使用正确的凭据,第二次登录不会发生。
2) 当用户两次输入错误的凭据时,authWindow 不再出现。
感谢任何帮助。
这是我的代码:
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 ClientRequest
api 能够重试更多次。
您的“登录”事件处理程序看起来像这样
const { app, BrowserWindow, ipcMain, net } = require('electron');
app.on("login", (event, webContents, request, authInfo, callback) => {
event.preventDefault();
let username = "";
let password = "";
const req = net.request({
method: request.method,
url: request.url
});
req.on("response", response => {
console.log(response);
if (response.statusCode > 400) {
console.error("something went wrong");
callback("", "");
} else {
console.log("we are good, request was successful"); // the request was authenticated correctly
callback(username, password);
}
response.on("error", err => {
console.error("something went wrong, response error", err);
callback("", "");
});
});
req.on("login", (loginAuthInfo, loginCallback) => {
this.createAuthPrompt().then(credentials => {
username = credentials.username;
password = credentials.password;
loginCallback(username, password);
});
});
req.end();
});
关于 Electron 回调只能被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697133/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!