我想做的是设置基于角色的授权(必需的用户和订阅的用户),并根据角色将用户重定向到不同的屏幕。 我很困香港专业教育学院尝试了不同的解决方案,并看到每一个教程都有关于这个概念。我了解该概念的工作原理,但是很难在我的代码中进行设置。我不确定在哪里声明订阅的用户,以及如何创建函数以及如何导航他们! 非常感谢您的帮助! 这就是我的代码的样子!
//这是我的身份验证服务
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();
}
},
);
}
//用户模型 导入'package: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
});
答案 0 :(得分:0)
存储角色信息的两个最常见的位置是:
无论选择哪个人,都应该在受信任的环境(您的开发机器,您控制的服务器或Cloud Functions)中设置此角色,否则任何人都可以更改自己的角色。
在这两个位置之一中进行设置后,您可以访问客户端代码中的角色信息,并导航到该用户的正确屏幕。
另请参阅:
答案 1 :(得分:-2)
@Error Place
有一个示例 Flutter 架构正好可以解决这个问题。
这是相同的链接:Role based login architecture
我已经多次尝试和测试过它,它的作用就像一个魅力。此外,当用户角色发生变化时,您将无法访问以前用户的信息(这有助于数据保护和隐私问题)。