我有关于angulardart和登录流程的结构性问题。我有一个服务,它与服务器进行通信,并具有login(),logout(),loggedIn()等方法。这一切都很有效,但我正在寻找一种最佳实践方法,将登录流程整合到我的应用程序中。
该应用程序要求用户登录。所以我会重新路由到自定义"登录"用户未登录时启动时查看?我还没有登录时切换主index.html的部分内容吗?我会创建一个处理登录的自定义组件吗?
这种情况是否有共同的角度模式?
答案 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
路线上设置它不起作用。