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

时间:2014-02-10 12:07:41

标签: dart angular-dart

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

该应用程序要求用户登录。所以我会重新路由到自定义"登录"用户未登录时启动时查看?我还没有登录时切换主index.html的部分内容吗?我会创建一个处理登录的自定义组件吗?

这种情况是否有共同的角度模式?

1 个答案:

答案 0 :(得分:6)

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

这是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'))  

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

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

虽然这很好用,但_ensureAuthenticated()方法必须在每个路由中设置为preEnter回调。有没有办法更容易地在全球范围内捕获preEnter?在root路线上设置它不起作用。