首页 文章

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

提问于
浏览
0

我开始学习 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 应用程序中我也使用拦截器,如果 authToken 仍然有效,则检入每个 http 请求 .

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

我试图在 NativeScript Angular 安全上找到任何材料,但没有找到任何材料 . 有什么地方我可以阅读更多关于这个?

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

1 回答

  • 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 deal在真实的演示应用程序中 . Here是Sample-Groceries应用程序中此防护的实际用法 .

相关问题