如何在未登录时导航用户登录页面

Mor*_*itz 7 dart angular-dart

我有关于angulardart和登录流程的结构问题.我有一个服务,它与服务器进行通信,并具有login(),logout(),loggedIn()等方法.这一切都在角度很好地工作,但我正在寻找一种最佳实践方式将登录流程合并到我的应用程序中.

该应用程序要求用户登录.因此,当用户未登录时,我是否会在启动时重新路由到自定义"登录"视图?我还没有登录时切换主index.html的部分内容吗?我会创建一个处理登录的自定义组件吗?

对于这种情况,是否存在共同的角度模式?

Mor*_*itz 7

我目前的解决方案是基于路由.我为登录和目标网页创建了视图.当用户登录登录页面并登录时,他将被路由到登录页面.当用户未经过身份验证并进入网站上的任何路径时,他将被重定向到登录页面.

这是RouteInitializer:

  ..addRoute(
      name: 'signin',
      path: '/signin',
      enter: view('view/signin.html'))
  ..addRoute(
      name: 'dashboard',
      path: '/dashboard',
      defaultRoute: true,
      preEnter: _ensureAuthenticated,
      enter: view('view/dashboard.html'))  
Run Code Online (Sandbox Code Playgroud)

必须将该_ensureAuthenticated()方法设置为preEnter回调并评估登录状态:

  _ensureAuthenticated(RoutePreEnterEvent routeEvent) {
    if (!_userService.loggedIn) {
      routeEvent.allowEnter(new Future<bool>.value(false));
      _router.go('signin', {});
    }
  }
Run Code Online (Sandbox Code Playgroud)

虽然这很好用,但_ensureAuthenticated()必须将该方法设置为preEnter每个路由中的回调.有没有办法更容易赶上preEnter全球?在root路线上设置它不起作用.