2014-02-10 136 views
4

我有一个关于angulardart和登录流程的结构性问题。我有一个与服务器交谈的服务,并具有诸如login(),logout(),loggedIn()之类的方法。这一切都非常好,但我正在寻找一种最佳实践方式,将登录流程融入到我的应用程序中。如何在未登录时导航用户登录页面

该应用程序需要用户登录。那么当用户没有登录时,我会在启动时重新路由到自定义的“登录”视图吗?当我没有登录时,我会切换部分主index.html吗?我会创建一个处理登录的自定义组件吗?

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

回答

4

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

这里是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路线上设置它不起作用。

相关问题