我开始学习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
安全性的任何材料,但没有找到任何材料。我有什么地方可以阅读更多关于此的内容吗?
在处理此类情景时,我应该考虑什么?
答案 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;
}
}
}
在真实的演示应用程序中The same deal。 Here是Sample-Groceries应用程序中该守卫的实际用法。