reactjs - 如何知道用户已经在firebase中的另一个浏览器上登录
问题描述
我的项目管理模块有 reactjs 管理面板。我的要求是如果 2 个用户具有相同的用户 ID 和密码,那么他们两个都不能同时登录。如果 User1 已经登录到管理面板,那么 User2 不应该登录。我已经获得了登录用户的 Id 令牌并将其保存到数据库中,现在我想检查用户是否已经登录。如果其他用户已经登录,我不知道如何阻止用户登录管理面板。
请对代码有所了解并建议我正确的途径来满足我的要求
这是我的代码:
//AUTHENTICATION
var loggedIn = false;
var activeSession = true;
if (Config.firebaseConfig.apiKey) {
firebase.auth().onAuthStateChanged(function (user) {
// Retriving ID Token
var Auth = firebase.auth();
var idToken = Auth.currentUser.getToken();
firebase.database().ref('activeSession').push({
idToken:idToken,
userEmail : user.email,
userId: user.uid,
isUserLoggedIn : activeSession
});
firebase.auth().verifyIdToken(idToken).then(function(decodedToken) {
console.log(decodedToken);
var uid = decodedToken.uid;
console.log(uid);
// ...
}).catch(function(error) {
// Handle error
});
}).catch(function(error) {
// Handle error
console.log(error);
});
if (user) {
// User is signed in.
console.log("User is signed in " + user.email);
if (Config.adminConfig.allowedUsers != null && Config.adminConfig.allowedUsers.indexOf(user.email) == -1) {
//Error, this user is not allowed anyway
alert("The user " + user.email + " doens't have access to this admin panel!");
firebase.auth().signOut();
} else {
loggedIn = true;
displayApp();
}
} else {
// No user is signed in.
console.log("No user is signed in ");
loggedIn = false;
displayApp();
if (window.display) {
window.display();
}
}
} else {
// No user is signed in.
console.log("No user is signed in, step 1 ");
loggedIn = false;
displayApp();
if (window.display) {
window.display();
}
}
function displayApp() {
if (loggedIn) {
ReactDOM.render(
<Admin />,
document.getElementById('root')
);
} else {
ReactDOM.render(
<Login />,
document.getElementById('root')
);
}
}
displayApp();
解决方案
推荐阅读
- npm - 禁止在客户端计算机上取消发布 npm
- internet-explorer - IE 不渲染带有 x-content-type-options 标头的位图图像
- android - 如何解决Android开发中的海量渲染问题
- python - 'strsep' 导致 Linux 内核冻结
- c# - 通用复合模式中的继承
- ruby-on-rails - 我在尝试 Gem 更新时遇到问题,服务器没有返回有效文件
- javascript - 在 select2 的一个选项中搜索多个单词
- python - 根据阈值改变表格的颜色
- c# - 如何在 Y 轴上旋转对象?
- vba - 如何为Word文档中添加的多个图像添加多个交叉引用?