NativeScript Angular应用程序中的安全访问

时间:2017-06-06 19:10:56

标签: angular security nativescript nativescript-angular

我开始学习NativeScript Angular(我曾经使用Angular开发webapp /网站),我仍然对如何创建一些人感到困惑限制对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安全性的任何材料,但没有找到任何材料。我有什么地方可以阅读更多关于此的内容吗?

在处理此类情景时,我应该考虑什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Angular' route guards

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;
        }
    }
}

基于此test application

在真实的演示应用程序中

The same dealHere是Sample-Groceries应用程序中该守卫的实际用法。