阻止未经身份验证的用户使用Ffltter Web应用程序中的URL导航到路线? [英] Prevent unauthenticated users from navigating to a route using a URL in a flutter web app?

查看:21
本文介绍了阻止未经身份验证的用户使用Ffltter Web应用程序中的URL导航到路线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个Ffltter中的Web应用程序,理想情况下它的工作方式与网站类似。用户将登录并能够看到他们的仪表板上有私人信息,但有一些带有公共信息的屏幕,任何人都可以使用以下动态路由URL导航到这些屏幕:myflutterapp.com/feed/usersPublicInfo,例如,此链接可以发布到另一个网站,用户可以直接进入此路线。

显然,使用命名路由是我需要的一个解决方案,但是,是什么阻止某人直接转到有私人信息的路由呢?或者至少防止用户转到包含null信息的页面并导致小部件崩溃?

解决方案想法1

使用命名的路由,在登录屏幕之后,将USER变量传递给每个屏幕,并在生成路由之前进行空检查。如果为空,则表示有人跳过了某些路径,并将其发送回登录状态

解决方案构想2

如果可能,请混合使用已命名路由和未命名路由,例如提要、仪表板和登录屏幕。一旦用户到达仪表板,就会使用Navigator.ush()处理所有路由,从而防止通过URL访问它们

其他解决方案?

我在颤动和颤动网方面还是个新手,所以我在这个问题上可能完全搞错了。如果你能给我一些建议,我将不胜感激。 谢谢!

推荐答案

static Future<void> init() async {
    WidgetsFlutterBinding.ensureInitialized();
    if(kIsWeb) {
      final String defaultRouteName = WidgetsBinding.instance.window.defaultRouteName;
      if(!(defaultRouteName == 'home' || defaultRouteName == 'login' || defaultRouteName == '/')) {
        SystemNavigator.routeUpdated(
           routeName: '/',
           previousRouteName: null
        );
      }
    }
    ...
}

这篇关于阻止未经身份验证的用户使用Ffltter Web应用程序中的URL导航到路线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆