GUNjs 用户未在隐身窗口中获得身份验证
Posted
技术标签:
【中文标题】GUNjs 用户未在隐身窗口中获得身份验证【英文标题】:GUNjs user not getting authenticated in incognito window 【发布时间】:2021-11-03 07:07:39 【问题描述】:我有一个非常奇怪的问题。我在 React 中有一个登录页面,用户可以在其中注册或登录。
当用户注册时,我在 GUNjs 中创建了一个用户。当我登录时,它会成功登录。但是,当我以隐身模式打开网站并尝试使用相同的凭据登录时,它说用户不存在。我也有一个对等服务器正在运行。对等服务器保存了用户的数据,但仍然会发生这种情况。
我的代码:
decentralized_db.ts
import GUN from "gun";
import "gun/sea";
import "gun/axe";
export const db = GUN(
peers: ["http://localhost:8765/gun"],
);
export const user = db.user().recall( sessionStorage: true );
peerServer.js
gun = (Gun = require("gun"))(
web: require("http").createServer(Gun.serve(__dirname)).listen(8765),
);
我的反应组件:
loginPage.tsx
:
import useState from "react";
import user from "../decentralized_db";
export default function LoginPage()
const [userCred, setUserCred] = useState(
username: "",
password: "",
);
function login(event: any)
event.preventDefault();
user.auth(
userCred.username,
userCred.password,
( err : any) => err && alert(err)
);
console.log(user);
function signup(event: any)
event.preventDefault();
user.create(userCred.username, userCred.password, ( err : any) =>
if (err)
alert(err);
else
login(event);
);
function handleChange(event: any)
let name = event.target.name;
let value = event.target.value;
let clonedState: any = ...userCred ;
clonedState[name] = value;
setUserCred(clonedState);
return (
<form>
<label htmlFor="username">Username</label>
<input
onChange=handleChange
name="username"
value=userCred.username
minLength=3
maxLength=16
/>
<label htmlFor="password">Password</label>
<input
onChange=handleChange
name="password"
value=userCred.password
type="password"
/>
<button className="login" onClick=login>
Login
</button>
<button className="login" onClick=signup>
Sign Up
</button>
</form>
);
【问题讨论】:
【参考方案1】:@pranava-mohan 嘿,这是一个错误,配置文件同步中存在竞争条件 - 登录将在配置文件完成加载之前检查凭据。
要确认这与您遇到的错误相同:尝试在另一个页面上多次单击登录。即使您什么也没做,它是否会在以后的尝试中登录?那么这就是错误。
努力在未来的版本中修复此问题。在那之前,获得错误帮助的最佳地点是http://chat.gun.eco,我们在那里回复更快。
对不起!如果它最终成为其他东西,请发表评论。
【讨论】:
由于某种原因,我的问题得到了随机修复?。我不知道为什么,但是相同的代码现在可以正常工作。以前,用户未在隐身窗口中进行身份验证,但现在正在通过身份验证。感谢马克纳达尔的回答,继续改变网络!以上是关于GUNjs 用户未在隐身窗口中获得身份验证的主要内容,如果未能解决你的问题,请参考以下文章
为啥注册用户未在 Firebase 中进行身份验证?为啥用户不能将产品添加到数据库 Firebase?
AFNetworking 2.0:凭据未在前一次请求的 30 秒内发送到身份验证