我想建立身份驗證系統,受保護和不受保護的路線。
這是我的代碼:
用戶模式:
class User {
User({this.username = '', this.isLogged = false, this.loginCookie = ''});
String username;
String loginCookie;
bool isLogged;
}
認證控制器:
class UserController extends GetxController {
final user = User().obs;
loginUser(Object userData) {
user.update((val) {
val?.isLogged = true;
});
}
logOutUser() {
user.update((val) {
val?.username = '';
val?.isLogged = false;
val?.loginCookie = '';
});
}
isUserLogged() {
return User().isLogged;
}
}
認證中間件:
class AuthMiddleware extends GetMiddleware {
@override
int? get priority => 1;
bool isAuthenticated = false;
final authService = Get.find<UserController>().isUserLogged; //Here comes true/false
@override
RouteSettings? redirect(String? route) {
isAuthenticated = authService();
if (isAuthenticated == false) {
return const RouteSettings(name: '/login');
}
return null;
}
}
登錄部分:
onPressed() async {
final isLogged = Get.find<UserController>().loginUser; //With this function I want to update state in state controller, function loginUser();
await AuthService().loginUser(email,password).then((res) => {
isLogged(response), //Runs loginUser();
Get.toNamed('/home') //Home is protected by Auth middleware above
}
}
結果,我一直被重定向到不受保護的路線,因為,
isUserLogged() {
return User().isLogged;
}
Auth 控制器中的函式回傳 false :)
有什么建議?
uj5u.com熱心網友回復:
這里
isUserLogged() {
return User().isLogged;
}
您正在創建 User 的新實體,而不是訪問當前實體:user.value.isLogged
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439862.html
下一篇:共享首選項鍵值不變
