小编Cha*_*acl的帖子

防止未经身份验证的用户在 flutter web 应用程序中使用 URL 导航到路由?

我正在尝试在 Flutter 中创建一个网络应用程序,理想情况下它可以像网站一样工作。用户将登录并能够查看包含私人信息的仪表板,但某些屏幕上包含公共信息,任何人都可以使用动态路由 URL 导航到这些信息,例如: ,myflutterapp.com/feed/usersPublicInfo该链接可以发布到另一个网站,例如用户可以直接进入该路线。

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

解决思路1

使用命名路由,并在登录屏幕之后将用户变量传递到每个屏幕,并在生成路由之前进行空检查。如果为空,则意味着有人跳过了一些路线,并且他们被发送回登录

解决思路2

如果可能,请混合使用命名路由和“未命名”路由,例如提要、仪表板和登录屏幕。用户进入仪表板后,所有路由都将使用 Navigator.push() 进行处理,从而防止从 URL 访问它们

其他解决方案?

我对 flutter 和 flutter web 相当陌生,所以我可能会完全错误地解决这个问题。我希望得到一些建议。谢谢!

routes flutter flutter-web

7
推荐指数
2
解决办法
4688
查看次数

在 Flutter Web 上使用 firebase_storage 4.0.0 将图像上传到 Firebase Storage?

看起来在 Firebase Storage 的最新版本中,该方法.put(...)已被弃用,取而代之的是 .putData(Uint8List) 和 .putFile(...),我还没有找到适用于 Flutter Web 的解决方案。

我正在尝试的代码是这样的,但它没有返回任何内容或抛出任何错误。

 _startFilePicker() async {
    InputElement uploadInput = FileUploadInputElement();
    uploadInput.click();

    uploadInput.onChange.listen((e) {
      // read file content as dataURL
      final files = uploadInput.files;
      if (files.length == 1) {
        final file = files[0];
        FileReader reader = FileReader();

        reader.onLoadEnd.listen((e) async {
          setState(() {
            uploadedImage = reader.result;
          });
          await uploadImage();
        });

        reader.onError.listen((fileEvent) {});

        reader.readAsArrayBuffer(file);
      }
    });
  }

  Future uploadImage() async {
    StorageReference storageReference =
        FirebaseStorage.instance.ref().child(userID + '/userPhoto');
    try {
      StorageUploadTask uploadTask = storageReference.putData(uploadedImage); …
Run Code Online (Sandbox Code Playgroud)

firebase-storage flutter-web

1
推荐指数
1
解决办法
2448
查看次数

标签 统计

flutter-web ×2

firebase-storage ×1

flutter ×1

routes ×1