0

我开始学习NativeScript Angular(我习惯于使用 开发 webapp/网站Angular),但我仍然对如何在 NativeScript 应用程序上创建一些受限访问或限制特定路由和/或路由集感到困惑.

例如,在 Angular 中,我uiRouter用来定义一些数据,如下所示:

data: {
    requireLogin: true
}

在每个页面转换中,我都会检查是否有有效的令牌来保证对该用户的访问。关于NativeScript我正在考虑它并且可以做同样的事情,我只是不知道,因为我很陌生NativeScript,我不知道这是否会违反任何最佳实践或常见的安全场景。

例如,我将在登录Application Settings后设置令牌,如下所示:

submit() {
    // process the login here
    if ( success ) {
        setString(AppSettings.authToken, authToken );
    }
}

然后我会将路由设置为具有父组件的父路由,我将在其中检查此令牌,例如:

export class ParentComponent implements OnInit {
    constructor() {}

    ngOnInit() {
        if ( !getString(AppSettings.authToken)) {
            return this.router.navigate(["/login"]);
        }
    }
}

这样我会检查用户在访问受限区域的应用程序时是否有有效的会话。

但是,例如,在普通Angular应用程序中,我还使用拦截器来检查每个http请求是否authToken仍然有效。

在这种情况下我该怎么做?

我试图找到任何关于NativeScript Angular安全的材料,但没有找到。有什么地方可以让我了解更多相关信息吗?

处理这种情况时我应该记住什么?

4

1 回答 1

1

你可以使用 Angular 的路由守卫

NativeScript 中 canActivate 路由保护的基本示例

class AuthGuard implements CanActivate {
    constructor(
        private loginService: LoginService,
        private nav: RouterExtensions) {
    }

    canActivate() {
        if (this.loginService.isLogged) {
            console.log("AuthGuard: authenticated");
            return true;
        } else {
            console.log("AuthGuard: redirecting to login");
            this.nav.navigate(["/login"]);
            return false;
        }
    }
}

基于此测试应用程序

真实演示应用程序中的相同处理是 Sample-Groceries 应用程序中这个守卫的实际用法。

于 2017-06-08T13:43:56.903 回答