gpt4 book ai didi

flutter - 基于角色的授权和基于角色的访问控制 flutter

转载 作者:行者123 更新时间:2023-12-05 02:56:18 25 4
gpt4 key购买 nike

我想做的是设置一个基于角色的授权(普通用户和订阅用户),并根据角色将用户重定向到不同的屏幕。我被卡住了。我尝试了不同的解决方案,并看到了所有关于这个概念的教程。我理解这个概念是如何工作的,但是在我的代码中设置它真的很困难。我不确定在哪里声明订阅用户以及如何创建函数以及如何导航它们!非常感谢任何帮助!这就是我的代码的样子!

//这是我的授权服务

 static void signUpUser(
BuildContext context, String name, String email, String password) async {
try {
AuthResult authResult = await _auth.createUserWithEmailAndPassword(
email: email,
password: password
);
FirebaseUser signedInUser = authResult.user;
if (signedInUser != null) {
_firestore.collection('/users').document(signedInUser.uid).setData({
'name': name,
'email': email,
'profileImageUrl': '',
});

//注册页面

    final _formKey = GlobalKey<FormState>();
String _name, _email, _password;

_submit() {
if(_formKey.currentState.validate()){
_formKey.currentState.save();

AuthService.signUpUser(context, _name, _email, _password);
}
}

//我的main.dart

 Widget _getScreenId() {
return StreamBuilder<FirebaseUser>(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (BuildContext context, snapshot) {
if (!snapshot.hasData) {
Provider.of<UserData>(context).currentUserId = snapshot.data.uid;
return LoginScreen();
} else {
return HomeScreen();
}
},
);
}

//用户模型 导入“包:cloud_firestore/cloud_firestore.dart”;

class User {
final String id;
final String name;
final String profileImageUrl;
final String email;
final String bio;

User({
this.id,
this.name,
this.profileImageUrl,
this.email,
this.bio
});

最佳答案

两个最常见的存储角色信息的地方是:

  1. 作为custom claim在该用户的 Firebase 身份验证 token 中,
  2. 在与该用户关联的文档中的数据库中。

无论您选择哪一个,您都应该在受信任的环境(您的开发机器、您控制的服务器或 Cloud Functions)中设置此角色,否则任何人都可以更改自己的角色。

在这些位置中的任一位置设置后,您可以访问客户端代码中的角色信息,并导航到该用户的正确屏幕。

另见:

关于flutter - 基于角色的授权和基于角色的访问控制 flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60616919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com