【问题标题】:Page authorisation filter - Flutter Web/Firebase Auth页面授权过滤器 - Flutter Web/Firebase Auth
【发布时间】:2020-11-12 17:13:00
【问题描述】:

我使用 FirebaseAuth(电子邮件/密码)作为身份验证来访问我的 Flutter 网站上的页面。我想确保在没有有效用户会话的情况下无法通过 URL 直接访问页面/小部件。

我目前正在使用以下内容,它可以工作,但它会导航后期小部件构建,这对于 Navigator 的工作来说似乎必不可少。然而,从可用性的角度来看,它看起来很糟糕,因为页面会闪烁然后返回。

在初始化状态

//Check if user is logged in
    auth.onAuthStateChanged.listen((user) {
      if (user != null) {
        print('User active');
        isLoggedIn = true;
      } else {
        print('User logged out');
        isLoggedIn = false;
      }
    });

在小部件构建功能中

 if (!isLoggedIn) {
      SchedulerBinding.instance.addPostFrameCallback((_) {
        Navigator.pushNamed(context, '/');
      });
    }

我能想到的唯一选择是首先在每个页面上加载的“授权”小部件,检查并转发用户,但它仍然很笨重,并不能真正很好地解决我的问题。

什么是 Flutter web 中更好的页面安全方法?

【问题讨论】:

    标签: flutter dart flutter-web


    【解决方案1】:

    检查包裹

    universal_html
    

    我认为它对你有用。你可以这样使用它:

    读写

    WebStorage.instance.sessionId;

    WebStorage.instance.sessionId = 'YOUR_CREDs';

    这样使用

    @override
      Widget build(BuildContext context) {
        if (Web) {
          isLogin = WebStorage.instance.sessionId != null;
        } else {
          isLogin = //check from local storage;
        }
        return isLogin ? HomePage() : LoginPage();
      }
    

    参考 Flutter For Web Cookie/Token Sessions and Authentcation

    【讨论】:

    • 感谢您的回复,但这是我尽可能避免的。
    猜你喜欢
    • 2020-06-26
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2020-09-09
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多