页面授权过滤器 - Flutter Web/Firebase Auth
Posted
技术标签:
【中文标题】页面授权过滤器 - Flutter Web/Firebase Auth【英文标题】:Page authorisation filter - 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 中更好的页面安全方法?
【问题讨论】:
【参考方案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
【讨论】:
感谢您的回复,但这是我尽可能避免的。以上是关于页面授权过滤器 - Flutter Web/Firebase Auth的主要内容,如果未能解决你的问题,请参考以下文章