Flutter Bloc 登录
Flutter Bloc Login
我在使用dart语言(flutter)登录时遇到了一个小障碍,我通过向API请求用户名和密码登录,但是用户名/密码错误仍然可以登录。这是为什么?
抱歉,我尝试post源代码,但总是出错post任务,因此我通过截图发送。
源代码登录页面:
和源代码登录区:
因为您在登录请求后导航用户。您正在向 BLoC 添加事件 (LoginSubmit
),然后在没有操作检查的情况下导航到仪表板。您需要检查身份验证,如果身份验证成功,导航到下一个屏幕。
在您的登录页面中,以下行需要移动到您处理状态更改的地方
Navigator.push(context, MaterialPageRoute(builder: (context) => Dashboard()))
应该有一个地方可以让您有一个侦听器或某种处理状态更改的流生成器。所以你应该有类似的东西,
...
builder: (BuildContext context, LoginState state){
...
if(state is LoginSuccess){
Navigator.push(context, MaterialPageRoute(builder: (context) => Dashboard()));
}
else if(state is LoginFailed){
// Show a snackbar with the reason for the failure.
// You could use scaffold or an external library depending on your preference
}
...
}
...
我在使用dart语言(flutter)登录时遇到了一个小障碍,我通过向API请求用户名和密码登录,但是用户名/密码错误仍然可以登录。这是为什么?
抱歉,我尝试post源代码,但总是出错post任务,因此我通过截图发送。
源代码登录页面:
和源代码登录区:
因为您在登录请求后导航用户。您正在向 BLoC 添加事件 (LoginSubmit
),然后在没有操作检查的情况下导航到仪表板。您需要检查身份验证,如果身份验证成功,导航到下一个屏幕。
在您的登录页面中,以下行需要移动到您处理状态更改的地方
Navigator.push(context, MaterialPageRoute(builder: (context) => Dashboard()))
应该有一个地方可以让您有一个侦听器或某种处理状态更改的流生成器。所以你应该有类似的东西,
...
builder: (BuildContext context, LoginState state){
...
if(state is LoginSuccess){
Navigator.push(context, MaterialPageRoute(builder: (context) => Dashboard()));
}
else if(state is LoginFailed){
// Show a snackbar with the reason for the failure.
// You could use scaffold or an external library depending on your preference
}
...
}
...