Как запретить пользователю доступ к маршрутам, введя NamedRoute в URL-адрес
Вопрос: название
Мне нужна какая-то проверка сеанса, например sessionId ?? index.html
, Понятия не имею, как это сделать. Router.dashboardView
а также Router.loginView
являются static const String
генерируется пакетом AutoRoute как namedRoute. Текущий код работает нормально, если я обращаюсь к нему из корня, но я могу обойти его, если напишу имя маршрута непосредственно в URL-адресе.
Пример (корень): https://webapp.web.app/ => автоматически дать мне https://webapp.web.app/
Пример (напишите имя маршрута в URL): https://webapp.web.app/ (в обход loginView)
Спасибо за любые ваши предложения и идеи.
Это мой текущий код,
main.dart:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool isLogin;
String initialRoute;
@override
void initState() {
super.initState();
initialRoute = checkSession();
}
String checkSession() {
isLogin = WebStorage.instance.sessionId != null;
return isLogin ? Router.dashboardView : Router.loginView;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: initialRoute,
onGenerateRoute: Router.onGenerateRoute,
navigatorKey: Router.navigatorKey,
);
}
}
dashboard_view.dart:
class DashboardView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('DashboardView'),
),
);
}
}
login_view.dart:
class LoginView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('LoginView'),
),
);
}
}