javascript - FirebaseUi-Auth 强制登录
问题描述
我正在尝试为我的网站实施强制登录。我遇到的问题是我找不到这样做的方法。假设我创建了一个登录页面,例如...
var uiConfig = {
signInSuccessUrl: '<url-to-redirect-to-on-success>',
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
firebase.auth.GithubAuthProvider.PROVIDER_ID,
firebase.auth.EmailAuthProvider.PROVIDER_ID,
firebase.auth.PhoneAuthProvider.PROVIDER_ID
],
tosUrl: '<your-tos-url>'
};
var ui = new firebaseui.auth.AuthUI(firebase.auth());
ui.start('#firebaseui-auth-container', uiConfig);
</script>
..在名为 www.example.com/SignIn 的页面上
如果我去 www.example.com/Index
我可以完全绕过所有的登录。
我想像这样的东西
if ( FirebaseUser.getCurrentUser () != null ) {
重定向到登录页面}
如何 ?
谢谢
解决方案
在页面上使用onAuthStateChanged
监听器www.example.com/Index
:
firebase.auth().onAuthStateChanged(function(user) {
if (!user) {
window.location.assign('www.example.com/SignIn');
}
...
});
但是,这不是实施访问控制的正确方法。您应该通过任一机制强制登录访问:
- Firebase 安全规则(您只能让经过身份验证的用户访问某些资源)。
- 通过将 ID 令牌传递到您的后端并在返回受限资源之前使用 Firebase Admin SDK对其进行验证。
您也可以使用会话 cookie 来执行此操作,具体取决于您的站点架构。Firebase 现在还提供创建长期会话 cookie的功能
推荐阅读
- javascript - 点击时从“显示:无”到“显示:内联”的转换
- android - JSON Parsing on error body (JSON Exception) org 。json.JSONException:字符 0 处的输入结束
- mongodb - 为什么 MongoDB map-reduce 有隐含的 this
- java - 当 junit3 在类路径上时,Mockito 失败
- javafx-8 - Scenicview 8.7 找不到 JavaFX 应用程序
- python - 自动编码器解码输出
- laravel - Laravel 查询两张表
- ios - 调试 iOS Cordova 应用程序崩溃时如何保持 Safari Web Inspector 保持打开状态?
- r - 从包含标记代码的 r 文件创建 html
- jsp - 如何使用 JSTL 获取 http 响应状态码?